domingo, mayo 28, 2017

Android: Comenzando con Kotlin

Si eres desarrollador Android sabrás que Google confirmó al lenguaje Kotlin como oficial para comenzar a desarrollar en Android.

¿significa que dejaremos de desarrollar en Java?..., en principio diría que no, porque Android Studio no reemplazará un lenguaje por otro sino que, Kotlin se incorpora como una opción, pero debo reconocer que estos cambios comenzarán a marcar una tendencia y eventualmente los desarrolladores comenzarán en forma "natural" a migrar o directamente a desarrollar en Kotlin y llegará el día en que nadie recuerde que Android se programaba en Java anteriormente, estoy seguro de esto y es hacia donde Google desea ir.

Pero al menos en este artículo no pienso bajar a detalle temas del lenguaje, lo voy a dejar para otro post, pero sí voy a atacar el ¿cómo comenzar con Kotlin? y dar un primer ejemplo práctico.

Mi recomendación, es que de todas formas comiencen a leer sobre el leguaje para comprender desde la base su estructura, la forma en la que fue pensado, qué elementos nuevos posee y esto les ayudará a poder pasar en forma más intuitiva de Java a Kotlin. Recuerden que Kotlin no es muy diferente a Java y funciona con la misma JVM..., pero nuevamente, dejaré esto para otro post.

Entonces, manos a la obra..., en primer lugar, no es necesario descargarse si o si la versión beta del Android Studio 3 para comenzar a trabajar en Kotlin, si bien fue una de las primeras cosas que hice por curiosidad de ver lo que se venía, pueden instalar el plugin de Kotlin y trabajar con la versión actual de Android Studio (que al día de este post es la 2.3.2).

Pueden seguir para esto los pasos de la siguiente guía:

https://www.slideshare.net/paveliz/androidkotlin-primeros-pasos

Que está basada en la guía del sitio de Kotling:

https://kotlinlang.org/docs/tutorials/kotlin-android.html

Cabe aclarar que cuando fui a buscar el plugin de Kotlin me encontré con 3 elementos..., el que deben instalar es el remarcado:


Una vez agregado, no se emocionen..., todavía no van a poder ver nada nuevo. Debe crear un nuevo proyecto o abrir alguno existente y al estar arriba cualquier Activity, si van al menú de Code en la barra superior verán una nueva opción que dice: Convertir a Kotlin:


Básicamente lo que hará esto es convertir el código de la Activity que por default está en Java:









..., en Kotlin:









Como un primer paso, les dejo un ejemplo que he subido a Github (https://github.com/paveliz/EjemploKotlin1). Tengo una Activity muy simple donde en el Layout puse un TextView, un EditText y un Button. Les quedará algo así:



En la Activity, como de costumbre, cree el método del botón:


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun clicBotonCambiar ( v : View) {

        val edtField = findViewById(R.id.editText) as EditText
        val txtField = findViewById(R.id.textView) as TextView

        txtField.text = edtField.text
    }
}


Noten que:

clicBotonCambiar

clicBotonCambiar no es un método, es lo que en Kotlin se llama un "Extension Function", que permiten agregar comportamientos a nuestra clase. Hay mucho para aclarar sobre esto, pero por ahora solo les digo que la ventaja del Extension Function es que puede "extender" una clase si necesidad de tener que pasar el objeto de la misma como argumento. El Extension Function actúa como si perteneciera a la clase.

Noten que en la definición de los argumentos, primero se coloca la variable, dos puntos y el tipo de dato de la misma (exactamente al revés de Java).

findViewById

Declarar un elemento del layout es muy simple, puede ser un "val" donde luego del findViewById hago el cast como "as [Object]".

Con "val" estoy definiendo un tipo de variable inmutable. La inmutabilidad es un nuevo concepto que viene con Kotlin. Un objeto inmutable es un objeto cuyo estado no puede cambiarse después de la instanciación.  Si necesita una versión modificada del objeto, debe crearse un nuevo objeto.

Los objetos "mutables" (como lo son por default en Java), se definen como "var".

txtField.text = edtField.text

Kotlin no tiene getters ni setters, por ende, todo lo que conocíamos como getText, getExtra, etc..., no está más y ahora se acceden como propiedades.

Procuraré lanzar un nuevo post con los detalles teóricos respecto de estos y otros grandes puntos del lenguaje Kotlin, pero al menos en este post me reservo esto, sin aturdirlos con la base teórica. El resultado es el mismo de siempre y dado que el ejemplo es muy simple no hay mucho truco, pero el tema es poder tener un primer acercamiento al código de Kotlin y pasar los temas que ya conocemos y son muy obvios para quienes venimos trabajando en Android con Java desde tiempo, a este nuevo lenguaje.

En breve, estaré subiendo más post relacionados a este tema ahondando más en el lenguaje, tema que - como comenté a principio de todo, les recomiendo comenzar a revisar tranquilos.


lunes, mayo 08, 2017

Para Google los colores son Importantes en Android

Dentro de lo que es el sitio de guía y especificaciones para Material Design (https://material.io/), Google introduce un set de herramientas muy útiles a la hora de evaluar tamaños de pantalla, animaciones, elementos que cambian de tamaño en pantalla y ahora colores. La herramienta COLOR TOOL (https://material.io/color/), permite seleccionar e indicar los colores para los elementos principales de tu aplicación y la misma herramienta luego aplica todas las tonalidades compatibles con cada elemento en pantalla, según su jerarquía y acorde justamente a lo que Material Design especifica.

Solo a modo de "repaso", Google introduce Material Design en el año 2014 con el objetivo de establecer un estándar de trabajo a la hora de diseñar las pantallas de una aplicación móvil (https://developer.android.com/design/material/index.html). Material Design no se limita a colores y fuentes..., establece parámetros animaciones, interacciones con el usuario e inclusive promueve el uso de una serie de componentes creados para tener una mejor interacción y visualización en aplicaciones Android (Themes, Toolbar, CardView, RecycleView, Shadows, tipos de Drawables nuevos, etc). Uno de los objetivos más importantes que se persigue es el desarrollo de una experiencia "unificada" a lo largo de la diferente variedad de dispositivos que existen.

COLOR TOOL es realmente una herramienta muy bien lograda y simple de usar. Con solo seleccionar un color de la paleta (o indicar uno propio por código), la herramienta presenta cómo queda aplicado ese color y diferentes tonalidades del mismo según la jerarquía de elementos en cada componente de Android. 



Se puede seleccionar cada color Primary, Sencodary, Text P y S y la herramienta mostrará como quedan combinados a lo largo de 6 tipos distintos de pantallas que contienen diferentes componentes de Android.





En la sección de "accesibilidad", la herramienta presenta textos en diferentes tamaños y contrastes de colores para dejar en claro qué elementos quedarán visibles y apreciables por el usuario en forma correcta y cuáles no. Esto nos permitirá corregir el color selecionado en el paso anterior.



domingo, febrero 12, 2017

Stetho: Debugging en Android igual que en Web

Recientemente tuve la oportunidad de participar en una charla brindada por el equipo de trabajo de Android en Facebook acerca de cómo trabajan, procesos y tecnologías que usan en la construcción de una de las aplicaciones más usadas y descargadas a nivel mundial.

Pero este artículo no es sobre esto, sino sobre un tema que fue arrojado al público presente como un "tip" de trabajo y me sorprendió ver que realmente muy pocos conocían. Y es el uso de Stetho.

Stetho surge justamente como una de los tantos proyectos del equipo de desarrollo de Facebook con la intención de mejorar su forma de trabajo, concretamente, de debugging de aplicaciones Android. Así es como también hay otros proyectos que han surgido por parte de ellos como React, redex, Fresco, makeitopen, etc (https://code.facebook.com/projects/).

Cuando te encuentras trabajando en un proyecto Android ¿quién no se ha encontrado con el problema de realizar un buen proceso de debug de servicios rest y poder analizar los elementos que la app transfiere por HTTP ¿quién no se ha encontrado con el problema de poder acceder a los datos de SQLite?...y no tener que hacer cosas como acceder a los archivos, descargarse la base al escritorio y abrirla con un motor de SQLite local para poder ver lo que la app pudo guardar o no.

Para hacer una analogía práctica Stetho nos da el mismo el mismo beneficio que el "inspect" que usamos en Chrome cuando desarrollamos web..., de hecho, la solución se basa en el mismo concepto. Aquí en el screenshot se puede visualizar un ejemplo de esto que hablo. Todos los elementos de la app, bajo la misma consola de desarrollo que tiene Google Chrome.

Stheto Inspect
Stetho Inspect


¿cómo se usa esto?

Primero debemos agregar Stetho al Gradle:
compile 'com.facebook.stetho:stetho:1.4.2'
Sugiero también agregar:
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
Nota: Esta es una de las opciones que Stetho tiene y es la más general. Luego tiene otras inclusiones particulares relacionadas al debuggin de HTTP. Para más detalles de esto ver los ejemplos y código en el sitio.

Luego, inicializamos el comoponente con esta línea:


public class MyApplication extends Application {
  public void onCreate() {
    super.onCreate();
    Stetho.initializeWithDefaults(this);
  }
}

Y listo!

Para probar su funcionamiento, debemos correr nuestro proyecto sea en un equipo o en un emulador y abrir Chrome. Una vez ahí, debemos colocar:

chrome://inspect/#devices

Ahí aparecerá nuestra aplicación y un link que dice "inspect", al hacer clic se abrirá otra pantalla con el conocido inspect de Chrome pero con todo el contenido de nuestra aplicación.

Chrome Inspect
Chrome Inspect


Entre las acciones más importantes y que en lo particular a mí me han sido de gran utilizar, puedo inspeccionar los recursos pudiendo acceder a los archivos de SharedPreferences y sobre todo a la base de datos de SQLite:

Stheto Inspect SharedPreferences SQLite
Stetho Inspect SharedPreferences, SQLite


No solo puedo ver la o las bases de datos que mi aplicación esté usando sino también las tablas y acceder a la edición del contenido mediante la escritura de consultas SQL. El otro punto que me ha sido de gran utilidad es el poder inspeccionar la interface de usuario igual que cuando hacemos debug de una página web. Stetho me muestra el árbol de componentes pudiendo acceder al detalle de cada uno:
Stheto Inspect UI
Stetho Inspect UI

Hay mucho más para investigar, pero Facebook lo tienen muy bien explicado en sus respectivas URL de referencia, espero lo usen y les sea tan útil como a mi.


http://facebook.github.io/stetho/

https://github.com/facebook/stetho

martes, septiembre 29, 2015

Android: Mudando del Actionbar a la Toolbar de Material Design

Dentro de todas las novedades que trajo Material Design no solo en cuanto a la especificación de "formas" y regla bajo las cuales trabajo, también hay nuevos elementos y uno de ellos es la Toolbar.

El objetivo de este ejemplo que he desarrollado y puesto en github, es mostrar un Actionbar con varios acciones implementado en forma tradicional y lo simple que es migrar esto al Toolbar de Material Design.


Actionbar

En primer lugar, desarrolle una Activity con un Action bar que tiene varias acciones, una de las cuáles inclusive es el widget de búsqueda.

<item android:id="@+id/action_settings"    android:title="@string/action_settings"    app:showAsAction="never" />

<item android:id="@+id/action_about"    android:title="@string/action_about"    app:showAsAction="never" />

<item    android:id="@+id/action_search"    android:title="@string/action_share"    android:icon="@drawable/ic_dark_search"    app:showAsAction="always"    app:actionViewClass="android.support.v7.widget.SearchView"    />

Noten que el último ítem tiene la propiedad "app:actionViewClass="android.support.v7.widget.SearchView ", lo cuál indica que voy a usar un widget de Search.

La Activity principal no tiene grandes cambios, tiene los métodos principales que requiere el menú:

public boolean onCreateOptionsMenu(Menu menu)

public boolean onOptionsItemSelected(MenuItem item)...

En el OnCreate, agregué 3 detalles para hacer mas interesante la barra como por ejemplo, quitar el título y poner un icono:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_app);

En la sección de estilos por el contrario, sí hay un par de puntos interesantes.

En primer lugar generé un recurso para especificar los colores y luego llamarlos desde los estilos:

<resources>
    <color name="colorPrimray">#03A9F4</color>
    <color name="colorPrimrayDark">#0288D1</color>
    <color name="colorPrimrayLight">#B3E5FC</color>
    <color name="colorAccent">#FFD740</color>
</resources>

Luego, genere un estilo específico para aplicar a esta Activity. Noten también que mi estilo generado deriva de AppCompat, para garantizar compatibilidad con las diferentes versiones de Android:

<style name="CustomActionBarTheme"    parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>

    <!-- Support library compatibility -->    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<!-- ActionBar styles --><style name="MyActionBar"    parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/colorPrimray</item>

    <!-- Support library compatibility -->    <item name="background">@color/colorPrimray</item>
</style>



Migrando a Toolbar

Finalmente, generar una Acitivity con la Toolbar, no es nada complejo. Sobre todo y lo más importante, es que no se pierden los items y la funcionalidad del menú realizado anteriormente.

Primero de todo, incluimos la Toolbar en el Layout de la Activity:

<android.support.v7.widget.Toolbar    android:id="@+id/toolbar"    android:layout_width="match_parent"    android:layout_height="?attr/actionBarSize"    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <ImageView        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:src="@drawable/ic_app"        android:scaleType="center"/>
</android.support.v7.widget.Toolbar>

Noten que ya no necesito incluir el icono por código, sino que puedo hacerlo desde el mismo layout con un ImageView.

En la hoja de estilos, aplique un estilo específico para la Toolbar:

<!-- Activity with Toolbar style. --><style name="AppSecondTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimray</item>
    <item name="colorPrimaryDark">@color/colorPrimrayDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="toolbarStyle">@style/Toolbar</item>
</style>

<!-- Toolbar style. --><style name="Toolbar" parent="Widget.AppCompat.Toolbar">
    <item name="android:background">?attr/colorPrimary</item>
    <item name="popupTheme">@style/Theme.AppCompat.Light</item>
</style>

En el OnCreate, llamamos e incluimos la Toolbar:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Y listo!!!




Los métodos del menú no cambian y se mantienen. Noten que el menú con el Widget de búsqueda sigue funcionando exactamente igual.

jueves, junio 26, 2014

NFC, oportunidades que no se deben perder de vista


El avance y la penetración en el mercado de equipos con NFC es cada vez mayor y ya no se puede negar que su uso, abre un mundo de posibilidades para todo lo que es medios de pago e intercambio de información con dispositivos móviles.

De acuerdo con las últimas proyecciones del IHS Technology, los equipos con NFC, alcanzarán 1.2 billones para el año 2018. Solo en el último año 2013, los dispositivos con NFC habilitado alcanzaron los 275 millones de unidades, siendo este número de 120 millones en el 2012, un 128% de crecimiento. En el 2014, se espera se expanda un 50% alcanzando los 416 millones.

NFC está integrado en el 18.2 % de los 1.5 billones de equipos en el mundo. En el 2018, se espera alcance el 64%.

Pero ¿qué es esto? y ¿porque darle importancia?

Brevemente, NFC o Near Field Communication (Comunicación de Campo Cercano), permite la comunicación de datos entre dispositivos que se encuentren muy cerca. La comunicación entre los pares se realiza muy rápido, a diferencia de Bluetooth o WiFi donde la conexión requiere claves y elementos que lo hacen menos dinámico.

El éxito del estándar se ha dado en la implementación de medios de pago en forma inalámbrica utilizando dispositivos móviles habilitados. Google ya permite realizar pagos por NFC a los usuarios que hayan configurado su Google Wallet. Así también, en varios países de Europa, ya se puede utilizar NFC para el pago en los medios de transporte. NFC también permite el intercambio rápido de información como contactos, fotos, videos y todo tipo de archivos.

Según el ABI Research, “Mas de 34 billones de tickets serán adquiridos por dispositivos móviles en los próximos 5 años”.

Tenemos un enorme público consumidor que ya dispone de dispositivos habilitados para usar esta tecnología y un sin fin de posibilidades, desde el simple hecho de poder pagar Colectivos, Subte, Trenes y todo medio transporte en forma fácil, hasta el hecho - porque no - de poder tener terminales de pago en Supermercados, comercios, estadios y teatros.

Está claro que oportunidades en el uso de esta tecnología que está cada vez más disponible hay muchas, solo hacen falta buenas ideas y la ayuda de las empresas para poder implementarlas.

Para aquellos que quieran saber con exactitud si su equipo tiene o debería tener NFC habilitado, en este link encontrarán el listado actualizado y oficial de equipos NFC compatibles:

http://www.nfcworld.com/nfc-phones-list/


Referencias:
http://en.wikipedia.org/wiki/Near_field_communication
http://www.mobilemarketingwatch.com/why-mobile-marketers-shouldnt-take-their-focus-off-of-nfc-39966/
http://www.nfcworld.com/2014/02/17/327868/nfc-account-30-mobile-tickets/

jueves, abril 11, 2013

ADN Emprendedor: No solo cuenta tener una idea también cuenta tener buenos contactos


¿Cuantos podrían llegar y cuantos son los que realmente llegan? es la pregunta que me vino a la mente hace un tiempo pensando en los deportistas profesionales. ¿es solo cuestión de perseverancia? ¿contactos? ¿recursos?...o quizás ese factor “suerte” que todos necesitamos.

Lo mismo pasa en el mundo de los emprendedores. Y no solo cuenta tener una idea sino también tener el coraje de seguirla y la ayuda de las personas adecuadas para poder plasmarla en el mundo real.

¿Quién fue realmente el que vio el potencial de Facebook? porque inclusive Mark sabía que había algo bueno pero no tenía muy en claro que hacer con él. Ahí es donde entra en escena el ex Napster Sean Parker. Un personaje polémico, con la basta experiencia de haber desarrollado un producto, enfrentado inversores, empresas grandes, juicios e inclusive haber perdido. Pero con la comprensión de como un empresario ve un producto y también como ven al emprendedor. 

Sean no solo vio el potencial de Facebook sino también tenía un conocimiento que le ayudaría a realizar un aporte "clave" al proyecto, y así fue. Facebook gana el primer capital inversor de la mano de contactos de Sean.

El “emprender” es un proceso de descubrimiento. En la época de la fiebre del oro los descubridores perseveraban hora tras hora colando el agua para tratar de descubrir el oro. Perseverar, analizando nuestras ideas, sacándolas del papel y poniéndolas en la vidriera.

"The best way to have a good idea is to have lots of ideas." (La mejor forma de tener una buena idea es tener muchas ideas), Linus Pauling

Lanzamiento: ¿qué es lo importante del lanzamiento de mi idea? ¿realizar un desarrollo extenso y complejo o buscar salir rápidamente para dejar probar al mundo la idea?. Hay que darlo a conocer! Se necesita feedback rápido!

“La primera versión de Grooveshark era un Frankenstein… Pero siempre va a ser mejor tener que reconquistar a un público más tarde, que quedarse años pensando en un concepto perfecto que tal vez nunca va a estar listo”, Andrés Barreto.

Amigos, Contactos y Socios: ¿Cuanto estoy haciendo hoy por mi perfil? (ver: Personal Branding hoy más que nunca!) o quizás si este ejercicio no me es fácil ¿cuánto estoy haciendo por mis relaciones? esas que luego ayudarán a enriquecer el emprendimiento agregando visión, consejos y más contactos. Emprender es también saber compartir. Tuve oportunidad de escuchar de primera mano el consejo de "Alec Oxenford", Co-Founder y  Co-CEO de OLX acerca de emprender, compartir y tener un socio: "Es preferible tener parte de la ballena que el 100% de la mojarrita", nos compartió con mucha gracia.

“He sido bendecido de encontrar gente más inteligente que yo, y ellos me ayudan a ejecutar la visión que tengo”, Russell Simmons. Fundador de Def Jam Records.

Yo creo que estas componentes son las que en conjunto hacen crecer una idea, un emprendimiento y son clave en su posible éxito.

Por último les dejo un ejemplo muy práctico sobre este tema que pude vivir en primera fila de la mano de un proyecto llamado Liibook sobre el cuál espero realizar un post específico más adelante. Federico Roma (fundador), Diseñador Gráfico talentoso y visionario tuvo una idea…, la de una plataforma de publicación de libros disponible en la web y abierta para todo el mundo. Así pues, armado solo de la idea busco 2 relaciones claves que lo apoyaron desde el pilar de los negocios, la introducción al mercado y desde el punto de vista tecnológico para poder realizar al menos la primer implementación.

Lo mas importante del emprendimiento fue el apostar a una idea y las relaciones que hicieron que esa idea pudiera llegar a algo. Un año después de haber ganado Wayra, la rueda en Sillicon Valley y su presentación en el TechCrunch 2012, Liibook pone un pié en San Francisco donde espera asentarse y recibir inversiones que le permitan seguir creciendo. Todo esto se logró gracias a la visión de Federico y el depositar la confianza en relaciones que supieron apoyarlo y ayudarlo.

lunes, marzo 11, 2013

Publicar mi App Mobile: Imágenes, iconos y tamaños a tener en cuenta


Ya sea desarrolladores, agencias, grandes empresas o individuos tratando de realizar el lanzamiento de su aplicación mobile, todos se encuentran con el mismo problema: la inmensa cantidad y variedad de tamaños de imágenes a iconos que se deben generar - y en diferentes formatos - para poder cerrar la aplicación y publicarla.

He aquí entonces un resumen acerca de todos los elementos a tener en cuenta a la hora de adentrarse en el mundo de la publicación de aplicaciones móviles.

iOS (Apple)

Apple App Store
El caso de Apple es "relativamente" sencillo, no por la cantidad de imágenes que se deben generar, sino porque las mismas se insertan directamente en el proyecto por medio de la interface de desarrollo (Xcode) y son pocas las imágenes que debemos tener a mano a la hora de publicar la aplicación a parte de los los print-screen o pantallas promocionales que hayamos confeccionado. Aún así la variedad de imágenes es grande dependiendo si la aplicación será compatible con iPhone, iPad, retina display y iPhone 5. Respecto del iPad mini, no es necesario tener consideraciones especiales ya que usa los tamaños del iPad 1 y 2.

iPhone App

App Icon: 57 x 57
App HD: 114 x 114

Launch Images:
320 x 480
640 x 960
640 x 1136 (iPhone 5)

iPad App

App Icon: 72 x 72
App Icon HD: 144 x 144

Launch Images (Portrait)
768 x 1004
1536 x 2008

Launch Images (Landscape)
1024 x 748
2048 x 1496

Pero como comenté al principio, todas estas imágenes se agregan con un simple "drag & drop" dentro del Xcode. Ahora bien, cuando estoy en el proceso de publicación, aparecen una serie de nuevas imágenes a tener en cuenta (información tomada directamente del formulario de publicación).

Large App Icon
A large version of your app icon that will be used on the App Store. It must be at least 72 DPI, in the RGB color space, and 1024 x 1024 pixels (it cannot be scaled up). The file type must be .jpeg, .jpg, .tif, .tiff, or .png. It must be flat artwork without rounded corners.

3.5-Inch Retina Display Screenshots
Screenshots for 3.5-inch iPhone and iPod touch Retina display must be 960x640, 960x600, 640x960 or 640x920 pixels, at least 72 DPI, in the RGB color space, and in the JPG or PNG format.

4-Inch Retina Display Screenshots
Screenshots for 4-inch iPhone 5 and iPod touch (5th generation) Retina display must be 1136x640, 1136x600, 640x1136 or 640x1096 pixels, at least 72 DPI, in the RGB color space, and in the JPG or PNG format.

iPad Screenshots
iPad Screenshots must be .jpeg, .jpg, .tif, .tiff, or .png file that is 1024x768, 1024x748, 768x1024, 768x1004, 2048x1536, 2048x1496, 1536x2048 or 1536x2008 pixels, at least 72 DPI, and in the RGB color space.

Routing App Coverage File (Optional)
Routing app coverage files are .geojson files which specify the geographic regions supported by your app. The file can have only one MultiPolygon element. MultiPolygon elements consist of at least one Polygon. Polygons contain at least four coordinate points. Polygon start and end coordinate points must be the same.

Android

Google Android Play Store
Es el caso inverso de iOS, en Android la plataforma solo nos pide el icono de la aplicación en diferentes densidades. ¿para qué esto? Como sabrán el universo de Android es basto y plagado de diferentes equipos de diferentes marcas que inclusive han hecho uso de las diferentes versiones del sistema operativo del robot verde. Según el tamaño de pantalla y resolución, todas las imágenes deben estar en diferentes densidades: ldpi (low dpi), mdpi (middle dpi), hdpi (high dpi) y xhdpi (x-high dpi). Como este punto no es el foco de nuestro tópico les dejo un link para que puedan indagar mas sobre el tema.


icon drawable-hdpi: 72 x 72
icon drawable-ldpi: 36 x 36
icon drawable-mdpi: 48 x 48
icon drawable-xhdpi: 96 x 96

Lo cierto es que a la hora de subir la aplicación nos encontramos con que el Market de Android nos pide varias imágenes de las cuales muchas son mandatorias.

Screenshots: 320 x 480, 480 x 800, 480 x 854, 1280 x 720, 1280 x 800 24 bit PNG or JPEG (no alpha) Full bleed, no border in art.

High Resolution Application Icon: 512 x 512 32 bit PNG or JPEG Maximum: 1024 KB

Promo Graphic (opcional): 180w x 120h 24 bit PNG or JPEG (no alpha) No border in art

Feature Graphic (opcional): 1024 x 500 24 bit PNG or JPEG (no alpha) Will be downsized to mini or micro

Windows Phone

Microsoft Windows Phone Market Place
La nueva plataforma de Microsoft tiene un "mix" interesante sobre las dos anteriores. A la hora de construir la aplicación el Visual Studio nos deja 3 imágenes a modo de ejemplo que luego hay que reemplazar:

Application Icon: 62 x 62 px
Slash Image: 480 x 800 px
Background (tile): 173 x 173 px

Estas imágenes ya vienen con la estructura base del proyecto, nosotros solamente debemos reemplazarlas con las finales y diseñadas para nuestra aplicación (obviamente respetando los tamaños). Adicionalmente, cuando se sube la aplicación el marketplace de Microsoft nos pide algunas imágenes y realiza varias validaciones a tener en cuenta:

Tile Icon 300 x 300 px (obligatorio)
Background Image 1000 x 800 px (opcional)
Screens 480 x 800 px

Específicamente Microsoft pide que las pantallas de la aplicación sean capturas realizadas con el emulador y NO imágenes armadas o diseñadas. Otro detalle, es que si la aplicación se encuentra en varios idiomas las capturas también se deben realizar en cada idioma y esto es mandatorio. Un punto muy diferente a cualquiera de los anteriores. Esto se valida en el proceso de publicación y es razón suficiente para no dejar pasar la aplicación al store.


A continuación les dejo un link que compartió conmigo Lucas Veliz, Diseñador gráfico especializado en temas de mobile (@lucasveliz84) el cuál permite en forma automática generar todas las imágenes necesarias para iOS y Android partiendo de una inicial, para usarlo necesitan Photoshop e Illustrator.


lunes, diciembre 03, 2012

Marca Personal (personal branding): Hoy más que nunca!


Tiempo atrás tuve oportunidad de leer un artículo que me pareció sumamente interesante, acerca de "Marca Persona" (o Personal Branding), y cómo esto es de suma importancia para los ejecutivos de hoy en día. Automáticamente vinieron a mi varios recuerdos siendo que hace varios años atrás supe adquirir un libro que me llamó la atención, no era de otro que el conocido autor Tom Peters, "Usted como Marca". A partir de ahí es que pude entender que no se trataba solamente pertenecer a una gran empresa, conocer mucho acerca de una o varias tecnologías, tener un emprendimiento o dar charlas, sino también de saber capitalizar cada una de estas cualidades y actividades como catapulta y apalancamiento de la acción de genera una a marca personal. Utilizar todos esos elementos de la curricula personal para construir una marca registrada de uno mismo. Pero, ¿cómo surge esto?

En el pasado, con sólo permanecer en la sombra era posible disfrutar de cierta seguridad...hoy en día, eso es mucho mas difícil. (Michael Goldhaber, Wired)

No te comprometas, querida. Eres todo lo que tienes. (Janis Joplin)

Así pues, la globalización, la competencia, las grandes despidiendo en masa, crisis como la del 2001 en Argentina, en el mundo y aún hoy las que están vigentes en países de Europa, hacen dar cuenta al ejecutivo que título y experiencia son sólo una parte, hay que salir a venderse y encontrar nuevas formas de mostrar las cualidades profesionales, el potencial y los valores. Peters hace varias referencias a esto, "la revolución de los cuellos blancos" le llama, pero en su reseña que él mismo tilda de alarmista no hacía otra cosa que contar una realidad. El empleado "tipo" es un factor reemplazable, si tu trabajo no tiene nada de especial por mas que te esfuerces nadie le prestará atención y lo que es obvio, comenzarás a ganar menos. La clave está en la re invención personal…y Tom dice: Háztelo a ti mismo, antes que ellos te lo hagan a ti. Entonces, cuando caemos en la realidad o nos "hacen" caer en la realidad que la seguridad laboral no existe, es momento de tomar la iniciativa y re inventarse. Tom realmente profundiza mucho más sobre el tema, el punto en cuestión no se encuentra en pensar que el trabajo o la oficina son malos, sino más bien que no son lo único y que cada uno puede y debe hacer de si mismo algo más.

Es entonces que hoy en día se encuentran varias herramientas a disposición para permitir mejorar y difundir el perfil personal de cada uno. Escribir en blogs, tener los datos actualizados en LinkedIn, comentar sobre temas de interés en Twitter son algunos de los caminos. Esto definitivamente no es una fórmula de éxito, es tan solo una parte del proceso, el verdadero valor está en lo que cada uno es y hace. Resurge entonces - y como parte de este proceso - un concepto que no es para nada original y existe desde siglos, "la especialización".

Conceptos básicos y claros:

  • Oficio = habilidades vendibles!
  • Diferenciación = Memorable!
  • Crear una red de conexiones = Publicidad boca en boca!

La clave es el "ser experto" y destacarse en algo puntual que uno sabe hacer muy pero muy bien!

El futuro de las carreras profesionales será encontrar al experto del experto. Hatum, doctor en Management and Organization de la Warwik Business School de Inglaterra.

En el mundo laboral que se viene, la estabilidad dejará de ser la variable central que nos ofrezcan las empresas. El constante cambio nos obliga a ser disruptivos. Hugo Pardo Kuklinski, director ejecutivo de Imagine Postdigital, fundador de Funky Mobile Ideas.

Pero hoy en día, aún cuando quizás no se viven esos momentos de explosión de burbujas, se hace imprescindible dejar el anonimato del cubículo u oficina para mostrar al mundo lo que uno sabe. "Yo como marca", "la marca personal"..., son tópicos que plantean que tu debes verte como tu propia empresa y que requieres la misma dedicación y difusión de lo que haces y lo que eres.

El carpintero modela la madera. El arquero modela el arco. El hombre sabio se modela a si mismo. (Buda)

Pero esto no es tan simple como parece, y para ir cerrando dejo justamente la pregunta clave que puede dar comienzo a un nuevo tópico: ¿qué quiero ser yo? ¿Qué es lo que quiero representar?

Martin Frias (director de Pragmativa Digital Marketing), en un artículo para la revista de ex-alumnos del IAE dice: es importante tener bien en claro hacia donde uno apunta. No hay que subirse a la ola simplemente por un tema de moda. La idea es generar contenido.

Así pues este simple concepto tiene sus vueltas y podríamos realmente extendernos mucho mas. El siguiente listado es un resumen entre los conceptos del artículo original que inspiró este post y el libro de Tom. Es un listado a modo de pautas a tener en cuenta a la hora de buscar implementar este proceso de "yo como marca":

1) Tener el objetivo claro: ¿qué quiero ser? y ¿cómo quiero realmente ser reconocido?

2) Compromiso absoluto con el proyecto propio.

3) Usted es sus clientes, por lo tanto conéctese con ellos!

4) Usted es su agenda de direcciones, nunca deje de ampliarla!

5) Actualización, mantenga su perfil actualizado.

6) Honestidad, la mentira es la peor enemiga. La confianza y la transparencia son dos de los activos más valiosos que encierra el concepto de marca personal.

7) Autopromoción, participe en charlas y medios en forma activa y asidua.

8) Aportar valor, hay que tener presente que aquello que dice o escribe debe agregar valor a su audiencia.

9) Prueba y error, para aprender es necesario equivocarse. Si bien es importante ser cuidadoso, tener en cuenta que en la web queda todo!

10) Salir y Animarse!

domingo, noviembre 18, 2012

Windows Phone 8: Al menos 5 características a tener en cuenta


El lunes 29 de Octubre se realizó el lanzamiento oficial de Windows Phone 8. Pero ¿qué es esto? ¿No existía Windows Phone ya? ¿Cambiamos todo nuevamente?

Es un poco de todo y creo que vale la pena una breve introducción antes de comentar algunas características. Windows Phone ya existe desde el año 2010 y la versión actual es la 7.8, aunque lo que pocos saben es que ya pasaron varias actualizaciones de 7, a 7.5 Mango y 7.5 Tango. Alineado al lanzamiento de la nueva versión de su ya clásico y conocido sistema operativo Windows - Windows 8 - , Microsoft realiza también un lanzamiento de la nueva versión de Windows para dispositivos móviles. Tal es así que esta nueva versión difiere en varios puntos de su predecesora y pone un poco en discusión sobre la mesa los ya conocidos problemas de "fragmentación" que existen actualmente en Android. En sus principales características distintivas WP8 está preparado y pensado para dispositivos doble núcleo, algo que ya se venía pidiendo hace rato. Hasta el momento, equipos de última generación lanzados este mismo año como el Nokia Lumia 900, no son doble núcleo. El nuevo y muy reciente Lumia 920 ya equipado con WP8 posee un doble-core Qualcom. En general, cuando hablamos de problemas de fragmentación, el impacto para los usuarios es prácticamente nulo, ya que todos esperan cambiar el equipo por uno mejor y más rápido; para los desarrolladores y empresas por el contrario, requiere de la constante actualización de sus aplicaciones y testeo en las diferentes plataformas.

Pero ahora sí, personalmente creo que esta nueva versión vino con una gran batería de elementos novedosos y esto lo considero un logro siendo que Microsoft digamos está llegando bastante más "tarde" a su incursión en el mercado mobile. Entonces, veamos al menos algunas de las características a resaltar.

Data Sense

WP8 incorpora como parte del sistema operativo el control del consumo de red con el proveedor que tengamos, configuración del plan, alarmas y hasta acá nada nuevo. Cuando Data Sense se encuentra encendido realiza una comprensión de datos trabajando en conjunto con el nuevo IE10, esto reduce considerablemente las tazas de transferencia y velocidad. Así también, Data Sense controla automáticamente si tiene Spots de Wifi cercanos y en tal caso, deriva tráfico a esos spots. Acorde a Microsoft, Data Sense reduce hasta un 45% el consumo del plan de datos.

Kid's Corner (El rincón de los chicos)

Windows Phone 8 - Kid's Corner
La idea de que los chicos puedan usar el dispositivo móvil sin que los padres sientan miedo acerca de qué aplicaciones y juegos usan, llega de la mano de esta nueva funcionalidad. En resumidas cuentas es como el conocido "control parental". Acorde a una estadística local, el 66% de los padres dejan que sus hijos utilicen el dispositivo móvil. Microsoft promueve esta funcionalidad como muy accesible y fácil de usar donde rápidamente se puede configurar que juegos, aplicaciones y fotos están disponibles, cuales bloquean el dispositivo o inclusive la imagen a mostrar para cada aplicación. Aplicaciones pagas y el store no quedan disponibles, de forma que los padres pueden perder cuidado acerca del uso de la tarjeta. Los chicos pueden personalizar la pantalla de ingreso, fondo y hasta colocar su nombre. Cuando se cierra Kid's Corner, todo vuelve a la normalidad.

Wallet (Billetera)


Windows Phone 8 - Wallet
Microsoft incorpora una aplicación donde el usuario no solo puede guardar en forma segura los datos de sus tarjetas de crédito, sino también operar con ellas vía NFC. La aplicación también se vincula con otras aplicaciones de forma de presentar las ofertas y locales disponibles sobre los que el usuario puede operar, así como también obtener su resumen e historial de consumo.

Este sigue siendo uno de los tantos puntos en donde personalmente veo un crecimiento y una gran oportunidad para nuevos desarrollos y negocios, siendo al mismo tiempo un gran diferencial y competencia con la plataforma de Apple. Hace ya al menos 2 años que los equipos Android de la mano de Samsung incorporaron tecnología NFC, permitiendo catapultar a plataformas como Google Wallet. iPhone 5 y iOS 6 recientemente lanzados y la comunidad preguntándose ¿cuándo Apple se hará "amigo" de este estándar?



Pantalla de Bloqueo con información "viva"

No es digamos "la funcionalidad más novedosa del mundo" pero al menos es un diferencial respecto de lo que Android ya presenta. Las pantallas de bloqueo animadas o "live lockscreen" presentarán tiles con información de diferentes aplicaciones de datos como noticas, deportes además por supuesto de mostrar la cantidad de emails sin leer y mensajes recibidos. Según lo presentan, no será uno de esos fondos animados que consumen la batería como Android, sino que será algo útil.

Rooms (Cuartos)

Windows Phone 8 - Rooms
Rooms pinta como un concepto innovador dentro del contexto de dispositivos móviles, pero es algo en parte ya existente en redes sociales como Google+. Básicamente en el hub de contactos hay un nuevo acceso o sección llamado "juntos" (toghether). Aquí es donde se pueden crear diferentes Rooms entre los contactos disponibles donde se presentan las siguientes funciones:

Room Chat (chat grupal): Permite generar un chat de mensajería entre los miembros de un room. Todos pueden ver los mensajes y con el nuevo servicio de "location" saber dónde se encuentra cada uno.

Shared Calendar (calendario compartido): Cada room posee un calendario compartido disponible para ser visualizado y actualizado por cada miembro del grupo. Si un miembro realiza una actualización, la misma se propaga y sincroniza al resto de los equipos del grupo.

Shared Photo Album (Album de fotos compartido): También se posee un álbum de fotos y vídeos compartido entre los miembros del grupo. Basta con subir una foto y estará disponible solo para los miembros del grupo.

Shared Notes (Notas Compartidas): Haciendo uso del conocido "Notes" (que usualmente vienen con el Office), se pueden compartir notas entre los miembros del grupo.


Al menos por ahora prefiero cerrar la nota aquí, realmente hay más novedades y componentes integrados en el nuevo Windows Phone 8 sobre los cuáles hablar, pero no quisiera hacer demasiado extensa la nota. Espero les haya gustado y continuaré con posiblemente, una segunda parte de esto.



Referencias: 
http://www.wpcentral.com/keep-track-data-usage-data-sense-windows-phone-8
http://www.wpcentral.com/kids-corner-windows-phone-8
http://www.wpcentral.com/introducing-windows-phone-8-wallet
http://www.wpcentral.com/live-wallpapers-revealed-windows-phone-8-facebook-espn-usa-today-and-bing
http://www.wpcentral.com/windows-phone-8-rooms-feature



lunes, noviembre 05, 2012

Barcamp 2012 - Una gran experiencia en el evento más esperado del año


El día domingo 4 de Noviembre, en nada más y nada menos que el Centro Cultural San Martin, se concretó el tan esperado evento anual y mundial llamado Barcamp. Para quienes no están muy al tanto de qué se trata, Barcamp es una red internacional de charlas generadas por la propia comunidad de usuarios y seguidores focalizada en compartir las últimas novedades y tendencias en web, mobile y tecnología digital.

Desde el 2005, Barcamp ha sido uno de los eventos más innovadores y precursores en su género imponiendo un nuevo concepto denominado "unconference". Este término bastante inusual no hace referencia a otra cosa mas que "contenido provisto por sus propios seguidores" (http://barcamp.org/w/page/402984/FrontPage).

Referencias del evento local: http://www.barcamp.com.ar/

Barcamp 2012 - Mundo Mobile - Mercado y Monetización de AplicacionesRealmente fue una experiencia excelente. Fue mi primer Barcamp al cuál asistí como colaborador en la parte de acreditaciones, fotos y también me animé a dar una charla que intitulé "Mundo Mobile - Mercado y Monetización de Aplicaciones".

En la charla pude darme el gusto de hacer un recorrido por cómo está el mercado mobile hoy con estadísticas y números, plataformas con sus diferencias, ventajas y desventajas, las claves para monetizar aplicaciones bajando algunos conceptos de publicidad y brindando los consejos, formas y empresas que nos pueden ayudar a monetizar nuestras aplicaciones. La verdad quedé muy contento con la respuesta del público tanto en asistencia como en preguntas, interacción y contactos pos-charla.

Pero si de destacar charlas se trata, algunas de las que pude asistir dada por gente importante del ambiente fue por ejemplo la de Vanesa Kolodziej, acerca de "Cómo los VCs valúan compañías". También hubo una charla de Gobierno Abierto, "SEO for Dummies", diferentes propuestas y tips para Emprendedores y tecnología.

Pizarras de Charlas

Realmente fue un evento muy completo y con un excelente equipo al cuál agradezco me haya dejado participar y ayudar. Esperaré con ansias el Barcamp el siguiente año!

Parte del equipo de Colaboradores

martes, octubre 09, 2012

Windows Phone: un punto de vista técnico y comercial

Jackson Feijó Filho (der) y Pablo Angel Veliz (izq)
Recientemente tuve la oportunidad de participar de un Bootcamp de Nokia orientado a introducirnos en el mundo de Windows Phone. El curso vino nada más y nada menos que de la mano de IT Master, el instituto mas importante en lo que a enseñanza de tecnología se refiere, reconocido inclusive a nivel mundial por RIM y Nokia. El instructor Jackson Feijó Filho, vino expresamente desde Brasil y pertenece al equipo de desarrollo de Nokia desde hace mas de 8 años.

Desde el punto de vista tecnológico la plataforma ha sido muy bien pensada y diseñada. Y voy a intentar resumirlo en los siguientes puntos (disculpen, pero es la sección geek del artículo):

El entorno de desarrollo está 100% integrado al ya existente Visual Studio, permitiendo desarrollar en VB.Net y C# entornos y lenguajes ya conocidos por muchos de los desarrolladores.

La interfase visual bien al estilo Microsoft, muy fácil de usar y simple.

Drag & Drop, y rápidamente el desarrollador está incorporando componentes. Doble Click para incorporar el código en cada evento. Algo que hoy en día a Android le sigue faltando, pero que el XCode de Apple, no debe envidiar en lo absoluto.

Los proyectos de tipo XNA, destinados al desarrollo de Juegos también presentan un framework de trabajo que se puede comprender y asimilar rápidamente.

Claro está, y como en todas las plataformas, a la hora de realizar aplicaciones complejas el desarrollador deberá adentrarse más profundamente en Silverlight y XNA.

La experiencia de usuario es claramente diferente. Microsoft basó su diseño en algo que llamó "Metro". Bajo este nuevo concepto Microsoft pone el foco en el contenido y su tipografía, y no tanto en lo gráfico, generando una experiencia realmente diferente a lo que venimos viendo en iPhone o móviles con Android. Sobre esto basó también Windows 8 lo cual permite, al igual que Apple, "unir los puntos" y generar una experiencia única y uniforme para el usuario (esto era algo que le faltaba a Microsoft).

Ahora sí, yendo al punto de vista del negocio, si bien es una plataforma en ascenso en cuanto a ventas y adopción tanto por parte de las grandes marcas como de los usuarios y también los desarrolladores, es claro que requiere un poco más de tiempo. En Estados Unidos, mientras iOS y Android compiten por el mercado (en realidad Android gana la pulseada 60/40), Windows Phone solo alcanza un 3% de inserción. Aún así el mercado muestra que el usuario está preparado para el cambio.

Windows Phone Usage


Apple cuenta con más de 650.000 aplicaciones y 250.000 para iPad. Android cuenta con más de 600.000 en su totalidad. Windows Phone está superando las 120.000.

El detalle a destacar se encuentra en que Windows Phone surge hace tan solo 2 años, significa que ha dado un salto muy grande en cuanto a aplicaciones y adopción en comparación con la curva de Apple y Android.

Todo el contexto de suscripción y publicación se ha facilitado y mucho. Las aplicaciones se pueden publicar a nivel global y, al igual que en Apple, se debe poseer una suscripción anual según sea individuo, estudiante o empresa.

La monetización de las aplicaciones tiene sus clásicos dos lados, el de la venta y el de la publicidad. Otro detalle a destacar, las aplicaciones pagas se pueden bajar como "trial", lo cual permite al usuario probar y si lo desea, pagar.

Haciendo un poco de research, no está presente la posibilidad de incorporar Ads en aplicaciones nativas por parte de muchas de las grandes empresas que prestan justamente este servicio, hablamos de Exchanges o DSP que sirven publicidad OnLine y también se han extendido a mobile cubriendo mayormente iOS y Android, ejemplo:

AdMob (http://www.google.com/ads/admob/), plataforma de Google (o adquirida por Google), permite la inclusión de Ads para Windows Phone. Idem, Mobclix (http://mobclix.com/).

No podía faltar la propia plataforma de Microsoft Ad (http://advertising.microsoft.com/mobile-apps).

Sorprendentemente, Hunt Mobile (http://www.huntmads.com/) líder en cuanto a lo que tráfico en Latam se refiere, no tiene disponible Windows Phone en su plataforma. Tampoco Mobpub (http://www.mopub.com/) o Admel (http://www.admeld.com/) entre otros.

Esto si bien no es un gran impedimento en lo absoluto, esperemos forme parte del proceso de expansión de la plataforma y de adopción con la misma naturalidad con lo que se ha hecho por iOS y Android. ¿Porqué digo esto? , tengamos en cuenta que el mercado de la publicidad en aplicaciones significó un revenue de $3.3 billones durante el 2011 para el mercado global y para el 2012 se espera sea 4 veces más. Esto significa una gran inversión por parte de las empresas y gran retorno para quienes publicamos aplicaciones que incluyen banners.

Conclusiones:

El acceso al desarrollo en la plataforma es muy fácil, están todas las herramientas disponibles, gratis y con un lenguaje conocido (al menos para comenzar). Avanzados, deberán aprender Silverlight y XNA.

Hay muy buenos equipos, sobre todo los de Nokia, pero la plataforma requiere todavía mas tiempo en el mercado.

Estoy seguro Exchanges y DSP extenderán sus plataformas para Windows Phone muy pronto para salvar el gap que existe actualmente en lo que a integración con plataformas de Advertisement se refiere.

Con el lanzamiento de Windows 8 Microsoft cierra el círculo, permitiendo que los usuarios puedan mantener viva su experiencia de punta a punta pasando por su desktop hasta su dispositivo mobile con la misma interacción y usabilidad, un gran punto a favor.

No dudo, hay que apostar y esperar, esta plataforma está dando pelea.



Fuente y Referencias