Tuesday, December 8, 2015

The hidden costs of the Google Maps API

Many times we promote the awesome benefits of Google. Why, they give so many things for free! It has become such a groundbreaking company when it comes to its services! You can even visit the Google campus and use many of the company perks for free whether it be riding one of the Google bicycles or using their soccer field. It does come as a surprise to many that when it comes to developing applications, that using some of the APIs given by Google may actually end up accruing a cost.

True to its Google nature we can see in the following image that Google does allow free access to Google Maps through its API. A great benefit to beginning Android products who want to see some tangible implementations take effect. When a particular map is loaded, there is an internal counter in the API that logs how many times a map is loaded. For small apps, Google generally absorbs any cost and it is free to use. However, when the map load count reaches a high count, a daily charge may be inflicted.

 Img. 1 Google Maps API cost per day

 Fig. 1 The growing pain of costs for daily map loads in an app using the API
Source: Svennerberg, G. 2010, Pak, J.

At the beginning stages of the Santa Clara Valley Wine App, there will be an estimated traffic that will most likely fall under the free categories. However, once the app is put onto the Google Play Store, a daily fee may begin to be charged unbeknownst to the ill-advised product owner.

A possible problem would be the map is loaded each time a winery is visited through the app. Now this could be potentially disastrous as we would want to minimize the amount of map loads per user. An excellent solution would be to not overload a map with markers but to utilize the GPS coordinates of a set of wineries to prevent the map from being reloaded constantly. According to Svennerberg who wrote about the Google Maps API, he said, "overloading a map with markers may hurt more than help." (Svennerberg, 2015).

The ultimate goal of an app though is to generate revenue. To generate revenue, we need to see many users access the app. More users using the app and we will have more and more map loads. As the revenue increases, so will the cost of using the Google Maps API. A growing pain but a necessary pain nonetheless. As developers continue to utilize different APIs, it will be integral in the software development to keep a track of the costs.

FAQ. (n.d.). Retrieved October 15, 2015.  https://developers.google.com/maps/faq?hl=en.
   Svennerberg, G. (2010). Beginning Google Maps API 3. New York: Apress. 

Monday, December 7, 2015

Encouraging False Hope

"Schools and parents should encourage young people to be realistic rather than idealistic about their career goals." This quote is an incredibly loaded question that pertains the deeper-seated question of how high should we push our youth? Should we just accept the fact that they're not brilliant enough to reach for a high position? Should we baby them and blindly encourage them to reach for an unattainable goal? One might even argue that the reason why the American dream is failing us is because of a failure to raise our youth up in the right way. Should we give them school of hard knocks instead? I heartily disagree with this question because it implies that we are telling kids to give up their dreams.

My personal belief is that we as schools and parents should not only encourage people to be idealistic for their careers, but not just give blind words and actually equip the kids. If an athlete tells his or her coach that their goal is to be the best in the world, the coach's role is to do everything they can to help attain this goal. The athlete who wants to attain this goal needs to put their work into it and with the coach pushing him, he may or may not attain this goal. If he fails to reach it he will still finish much higher than the "realistic" idea about their career goal.

However, there is a large caveat when it comes to being idealistic in their encouragement. It would be prudent to encourage the young people to be bold with their ideas and work hard at their goals rather than telling them they can achieve anything but not emphasize the proper work ethic and the knowledge that would be required behind it. Pragmatism is the true encouragement behind the idealism of a career goal. If say a child says, "I want to develop an idea into a start-up." The pragmatic response to promote their idealistic career goal would be, these are the tools that you will need to put this idea into play. You need to learn how to code in several languages, how to write a resume, how to get a venture capitalist to invest in you idea, how to market your product. These are all real world useful skills that can be used in the real world. (Study, 2015)

To summarize, we should encourage young people to reach for the stars. Pragmatically.


Pragmatism: Overview & Practical Teaching Examples. (2014). Retrieved December 8, 2015, from http://study.com

    /academy/lesson/pragmatism-overview-practical-teaching-examples.html

Monday, November 23, 2015

Data Structures 101 for the Product Owner

Data structures may seem like a very foreign concept to those unfamiliar with any high-level computer languages such as Java or C++. Though it is not integral to know precisely what data structure will be used for your particular app, it is extremely handy to understand the differences and some of the reasoning and benefits to some data structures over others. Some data structures offer speed over ease of adding and deleting information. Some, can offer quick and easy access but may run into problems in the future. Basic knowledge of what data structure is used can help you understand if the app will be a clunky, slow, and cluttered app, or a streamlined, well-oiled machine.

The Santa Clara Valley Wine App currently uses a hash map using the name of the establishment as a key for the hash map. Before continuing any further, let me answer the question that those unacquainted with Computer Science have. What is a data structure?

An extremely important use of Computer Science is the handling of data. Perhaps an app will need to store the data of a particular restaurant and its lunch menu. The menu may have dozens of listings. We will need to store data, organize the data, access the data, manipulate or alter the data, or be able to pass the same data somewhere else. (Weiss, 2012) This is where a data structure comes in. Now, there are those who may have a small background in coding and will offer a simple yet faulty solution. We can just store information in an array or an array list. Sadly, as aforementioned, data structures have strengths and weaknesses. Array lists offer easy access, but when adding or deleting new information, for large data it can be extremely taxing for the system to implement it. Array lists are not an efficient data structure for storing a large amount of data.

There are dozens of data structures but when working with developers, one may hear the word hashing or hash code. To the average developer this is no big whoop, but to someone who wants an app this will fly right over your head. Hash maps are data structures where data is stored in array of something known as buckets. Data in each bucket have a unique ID to access the data known as a key. This key may sometimes be known as a hash code. A strong benefit of using hash maps is random retrieval using a key will be significantly faster over a list. (Weiss, 2012) Lists are when data is stored in order and if retrieval is done in order the data is stored in, it will be faster but when storing winery locations, for example, a hash map is very much preferred.

Hopefully, the idea of learning about data structures without a background in code is not too big a pill to swallow. Though it is not something necessary to have a profound understanding, it will help bridge the gap between a product owner and developer. It can also help the product owner get a small hint of an understanding whether their developer is a good developer or a great one.

Weiss, M. (2012). Hashing. In Data Structures & Algorithm Analysis in Java (3rd ed.). Reading,
     MA: Addison-Wesley.

Thursday, October 15, 2015

Associating the Wine Association

After a few weeks of creating mockups, proposals, ideas, and hammering out some details, the Android team of the Santa Clara Valley Wine Association mobile application have a general gist of the velocity and direction that the application will go in. Here I will describe a few technical things that may be involved in the mobile application's implementation. The goal here is to help any potential clients and users of the application in case they are not well-versed in mobile applications or technology in general.

We first must acknowledge what the average user traffic will be. First off, the people who will be visiting wine associations must be at the very least of a legal age to consume alcohol. Unfortunately this also means a large number of people who are natively born into using technology will be ruled out. Fortunately the ones who do go on wine trails will be of age and will have money to spare. Having money is, of course, unrelated to technical understandings but it is not an uncommon association to relate a good source of income with a good smartphone. So we can safely say that this blog is targeted towards those who have smartphones and are not accustomed to mobile applications but also have a good income. Perhaps not the most eloquent way of describing for whom this blog will be for but I digress.

In Google Maps API 3, mapping solutions for a consumer is a common and key ingredient in web development. (Svennerberg) Another common feature in is social bookmarking. It is bread and butter in this industry to include a select variety of features in an application. (Alexander) Google Maps for mapping solutions and social media. Currently the social media that is most common is Facebook but it is not out of the ordinary for apps that ask if the information input is to be shared via Twitter, Instagram, or other forms of social media.

In order for the client to fully understand the uses of the application, they will have to be come comfortable with not only using their smartphones but additionally comfortable enough to use Google Maps in a mobile environment. This is more common these days when people use their smartphones and its GPS to navigate through unknown terrain. To get the full user experience and to broaden the application's user field we would also include a way to bond with social media.

The best way is to start by using the Google Maps application to navigate yourself to an area that perhaps is nearby. This will help users get accustomed to how the application works before trying to use the API inside a different user interface. If the user has not already used Facebook, another way to acclimate users would be to get a social media account and also use the smartphone application. Facebook can be a tricky and wily jungle for the social media illiterate but it is a powerful tool to connect with people. Facebook, however, like the technological landscape, is always changing. The application itself is never really the same after a few months. Facebook is known for constantly changing and updating the application. Many a time was there when users would complain because of unfamiliarity with an updated interface to only realize the potency and power of it a few weeks later. It is best to sort of "suck things up" and hammer into your brain the new features.

Once the users get used to these sorts of applications will using their respective features in the upcoming wine app will they be able to fully utilize everything.


Svennerberg, G. (2010). Introducing the Google Maps API. In Beginning Google Maps API 3 (3rd ed., Vol. 1, pp. 1-3). New York, New York: Apress.

Alexander, B. (2006, April 1). Web 2.0: A New Wave of Innovation for Teaching and Learning? Retrieved October 14, 2015. 

Friday, September 25, 2015

Santa Clara Valley Wine App

So after meeting with the client, Professor Timothy Hendrick and Scrum Master Professor Debra Caires, we had an opportunity to dissect more into the concept and sort of paint the outline of the what the application was to entail.

The application that was in mind seemed to encompass a variety of tools to help aid, inform, and benefit any person who would be going to visit any of the Santa Clara Valley Wine Association wineries that are located around the Morgan Hill area. The concept seemed not too far away from combining multiple existing tools such as GPS navigation, trip planning, links to websites, working hours of the wineries, and to aid a user have an excellent experience while visiting the wineries.

The current state of the application was laid out by a graduate student. The product as so eloquently put was done by a "grad student." This implied that it was perhaps hastily or hurriedly done due to a grad student's busy schedule. I believe the development teams from CS100W will be to take the skeleton and help implement and fill in the organs of the application. Realistically, the application will take several semesters but the goal will be to have something tangible to showcase at the Innovation Challenge and perhaps win a cool $5000 for the team. "Potential seed money for a start-up," was what Professor Caires commented. (Caires, 2015)

We have to do research on how to train the client. This seems like an interesting task because the client, Professor Hendrick, has worked in several start-ups and hardly seems like he may need any sort of training. However, perhaps the training they he may need is what we the developmental team have expertise in. We are tech-savvy Computer Science majors and know what is potentially possible to do in coding. We will have to of course get something functionally tangible and instruct the client how to navigate through the product. We can also do research on implementing certain widgets that will be used in the application such as Google Maps, Trip Planner, and so forth. We can also teach the client in possible ways to minimize and simplify the user interface, so as to not overwhelm new users to the application. If users are to use the application on their smartphone, we will have to prevent the application from crowding their screen and have only a few things they can access through touch.

So hopefully this project will lead to a wonderful end project
-Jonathan