Reverse Geocoding: Google Maps API

Provider: Google Inc.
Url: https://developers.google.com/maps/documentation/geocoding/intro#ReverseGeocoding
Provider Client Libraries: Javascript, Java, Python, Android, iOS
Multiple Languages: Yes
Limitations: 2,500 free requests per day, 10 per second
Price: Free: 2,500 requests per day

 

Pay as you go: $0.50 USD / 1000 additional requests, up to 100,000 daily.

 

Google Maps API for Work: it depends on the purchased quota https://developers.google.com/maps/documentation/business/

Example request:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=APP_SPECIFIC_API_KEY

Example response:

{
	"results" : [
		{
		"address_components" : [
			{
				"long_name" : "277",
				"short_name" : "277",
				"types" : [ "street_number" ]
			},
			{
				"long_name" : "Bedford Avenue",
				"short_name" : "Bedford Ave",
				"types" : [ "route" ]
			},
			{
				"long_name" : "Williamsburg",
				"short_name" : "Williamsburg",
				"types" : [ "neighborhood", "political" ]
			},
			{
				"long_name" : "Brooklyn",
				"short_name" : "Brooklyn",
				"types" : [ "sublocality", "political" ]
			},
			{
				"long_name" : "Kings",
				"short_name" : "Kings",
				"types" : [ "administrative_area_level_2", "political" ]
			},
			{
				"long_name" : "New York",
				"short_name" : "NY",
				"types" : [ "administrative_area_level_1", "political" ]
			},
			{
				"long_name" : "United States",
				"short_name" : "US",
				"types" : [ "country", "political" ]
			},
			{
				"long_name" : "11211",
				"short_name" : "11211",
				"types" : [ "postal_code" ]
			}
		],
		"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
		"geometry" : {
			"location" : {
				"lat" : 40.714232,
				"lng" : -73.9612889
			},
			"location_type" : "ROOFTOP",
			"viewport" : {
				"northeast" : {
					"lat" : 40.7155809802915,
					"lng" : -73.9599399197085
				},
				"southwest" : {
					"lat" : 40.7128830197085,
					"lng" : -73.96263788029151
				}
			}
		},
		"place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
		"types" : [ "street_address" ]
		},
		
		... Additional results[] ...

Dos céntimos para el empresariado cántabro

Recientemente he acudido a un evento por y para empresarios y directivos de Cantabria en el que se iba a hablar sobre cómo afecta la transformación digital. Me gustó lo que se oyó, aunque algunas cosas no fuesen las que esperaba oír.

(…)

Ahora bien, hubo una cosa que se dijo que no sólo no me gustó, si no que estoy completamente en desacuerdo. Antes de montar una batalla campal decidí respirar para, con calma, ahora, poder analizar que parte de verdad tiene.

Continuar leyendo en El Faradio.

API Management

What is it?

Creating a centralized API architecture that makes the process of composing, securing and managing high-performance interfaces significantly simpler and more consistent.

API Management helps organizations publish APIs to external, partner and internal developers to unlock the potential of their data and services. API Management provides the core competencies to ensure a successful API program through developer engagement, business insights, analytics, security and protection.

Main areas

  • API Security—Enterprises cannot afford misuse or abuse of their information or of any application resources exposed by an API.
  • API Lifecycle Management—Enterprises need a way to ensure API updates do not break when they upgrade/version APIs or move between environments, geographies, datacenters and the cloud.
  • API Governance—Enterprises need a way to control and track the broader operational character of how APIs get exposed to different partners and developers, through policy characteristics like metering, SLA, availability and performance.
  • Developer Enablement and Community Building—Enterprises need a way to bring developers on board, manage these developers and assist them in making the most of the exposed APIs.
  • API Monetization—For some enterprises, publishing APIs is not enough. APIs also represent a new revenue opportunity. Different API Management solutions enable monetization to different degrees. For enterprises, addressing these functional requirements is non-negotiable. However, along with these functional requirements, an enterprise will expect its API Management solution to deliver certain operational characteristics relevant to its unique IT experience.
  • Solution Manageability—Enterprises have development, test and production environments that span geographies, datacenters and clouds. They will therefore need an API Management solution that can fit their specific development styles and processes.
  • Solution Reliability—Enterprises publishing APIs commercially expect 5 9’s uptime, if not greater. Enterprises cannot afford outages.

Main features

  • API Integration – Ensure consistency between multiple API implementations and versions.
  • Documentation (Doc) – One of the most common problems of developers is figuring out how an API works. Development time is too precious to waste in trial and error of an undocumented API. An API management service has to provide an easy way to read the documentation and enable developers to “try before they buy”. In some cases it is even possible to provide interactive documentation. Simplicity and usability are the keys.
  • Analytics and Statistics (A&S) – It is critical to understand how people use your API and get insights for your business.
  • Deployment (Dep) – Should be flexible and support public or private clouds, on-premises implementations, or combinations.
  • Developer engagement (Dev) – Engaging with your API consumers, developer or partners is important. Getting an easily accessible developer portal will significantly facilitate onboarding.
  • Sandbox environment (SBE) – This feature will increase both the value of an API and its adoption rate, making easy to test code.
  • Traffic management (Tra) and caching abilities (Cch).
  • Security (Sec) – APIs carry sensitive data, so it is important to protect the exposed information. The service has to at least provide identity and access management for users and developers.
  • Monetization (Mon) – Provide the capability to monetize your API.
  • Availability (Ava) – Should be available, scalable and redundant. An API environment can become demanding and the service should be able to deal with any kind of errors, problems or temporary traffic spikes.

Solutions

  Doc A&S Dep Dev SBE Tra Cch Sec Mon Ava
3scale Yes Yes   Yes   Yes   Yes Yes  
Akana Yes Yes   Yes         Yes  
Amazon API Gateway   Yes No       Yes Yes   Yes
ApiAxle   Yes Yes     Yes        
Apigee   Yes           Yes Yes Yes
Axway     Yes         Yes   Yes
Azure API Management Yes Yes Yes Yes No Yes Yes Yes No Yes
CA Layer 7   Yes   Yes   Yes   Yes Yes Yes
IBM API Management   Yes   Yes       Yes   Yes
Mashape Yes Yes   Yes       Yes Yes Yes
Mashery   Yes   Yes   Yes   Yes    
Mulesoft   Yes Yes     Yes   Yes    
Oracle SOA Yes Yes   Yes       Yes    
WSO2 Yes Yes Yes Yes Yes Yes Yes Yes Yes No

* White boxes indicate that no documentation about subject could be found on the first looks

Políticas en API Management, mi colaboración en el Global Azure Bootcamp

Nota rápida para compartiros mi charla del Global Azure Bootcamp. En ella introduzco el entorno de API Management que proporciona Azure, y vemos cómo se pueden usar las políticas para hacer prácticamente lo que nos dé la gana. Podéis ver todos los videos en Channel 9.

Patrones cloud: protocolos gossip

Con los protocolos gossip vamos a dar por interrumpida esta serie, en la que hemos hablado de cachés, de particionado y de tablas hash siempre en torno a un ejemplo de Infinitext, un caso realista aunque no real.

Podéis encontrar definiciones mucho más detalladas y con categorizaciones y todo, pero ya sabéis que me gustan las cosas simples y un protocolo gossip simplemente es un algoritmo de comunicación que montas para “que todo el mundo lo sepa todo”.

Seguir leyendo en CantabriaTIC.

Patrones cloud: Tablas Hash

En esta serie ya hemos hablado de las cachés, del particionado, y hoy vamos a hablar de las tablas hash.

Las tablas hash no son más que estructuras de almacenamiento clave-valor. La clave se suele establecer usando el hash de un objeto y por eso se llaman tablas hash. El hash de un objeto es un código de texto que identifica al objeto más o menos inequivocamente, y suele existir un método por defecto en la clase base de muchos lenguajes de programación orientados a objetos: por ejemplo con el método hashCode de Object en Java o con el GetHashCode de Object en C#; aunque habitualmente toca reescribirlo. Pero no quiero liaros, que en realidad para dónde vamos nos importa poco si usamos el hash del request, el nombre del usuario o cualquier otra cosa como clave.

Continuar leyendo en CantabriaTIC.