Ya pasaron algunas semanas desde Flutter Live, y teníamos ganas de compartir un par de reflexiones sobre el evento. Al nuestro equipo le sorprendió el ímpetu de la comunidad con respecto al ...


Ya pasaron algunas semanas desde Flutter Live, y teníamos ganas de compartir un par de reflexiones sobre el evento. Al nuestro equipo le sorprendió el ímpetu de la comunidad con respecto al lanzamiento de Flutter 1.0. Flutter permite crear apps atractivas y rápidas mediante herramientas que funcionan con tu editor o IDE favorito, y en un tiempo de ejecución de código abierto que te convierte en un desarrollador mucho más productivo. El evento fue una oportunidad maravillosa para compartir nuestros próximos planes, demostrar algunas de las increíbles formas en que los socios utilizan Flutter para crear contenido y ver cómo las comunidades se unen en todo el mundo.

El impulso de Flutter

Desde que Flutter ingresó a la versión Beta en febrero de 2018, más de 250,000 desarrolladores han creado apps para más de 200 millones de usuarios.
En ese corto período, Flutter llegó al puesto #25 en GitHub de repositorios de software activo. En Flutter Live, compartimos que nuestro SDK ocupaba el puesto #34 de los repositorios de software activo más populares de GitHub. Sin embargo, desde el evento, alcanzó el puesto #21, pasando a Swift, Kubernetes, Angular y TypeScript. Nos sigue sorprendiendo el afecto que los desarrolladores tienen por Flutter.
Y está claro que se usa para crear contenido increíble. Si tomamos a apps como Reflectly, Topline de Abbey Road y la nueva The History of Everything, podemos ver que cada píxel y movimiento es asombroso. Con solo ver las calificaciones de Google Play y App Store de estas y otras apps populares de Flutter, nos damos cuenta de que los usuarios piensan lo mismo.
El momento de mayor impacto fue durante Flutter Live, como se puede ver aquí, en la presentación.

Todo eso era en preparación del evento en sí, que se resume en solo 10 minutos.

Y, si aún no la has visto, puedes consultar la lista de reproducción completa de contenido de Flutter Live.

Comunidad de Flutter

Publicar Flutter 1.0 no fue solo un esfuerzo de Google, sino un trabajo en conjunto de todos los usuarios. La comunidad de Flutter ha tenido un papel invaluable en el desarrollo del SDK y de herramientas relacionadas, con más de 12,000 aportes de 285 colaboradores. Flutter se desarrolló de manera abierta para alentar la participación global, pero el equipo nunca esperó que la comunidad creciera tan rápido y con tanta potencia. Dato curioso: El desarrollo del complemento de Visual Studio Code para Flutter estuvo a cargo de un solo desarrollador de la comunidad: Danny Tuppeny (también conocido como DanTup). Danny hizo un trabajo tan increíble que ahora es el encargado de hacer que Flutter funcione a la perfección en VSCode.
La inspiración que Flutter genera en los desarrolladores no se detiene allí. Usuarios de todo el mundo se reunieron para ver juntos el evento, como ocurrió en Estonia:

China:

Y Kampala, Uganda:


¡Y gracias a todos los desarrolladores que publicaron en #MyFlutterStory! Fue muy difícil elegir las mejores historias.

Estos desarrolladores no han estado inactivos. La lista de paquetes de Flutter de pub.dartlang.org muestra que hay más de 1,000 paquetes de la comunidad que puedes utilizar en tus proyectos. Echa un vistazo a lo que nuestros usuarios ya están creando con estos recursos:

Pero eso no es todo: además del conjunto existente de paquetes para agregar Firebase a tu app de Flutter, también está el nuevo Firebase MLKit, que ofrece reconocimiento de imágenes y funciones en tiempo real, así como los dos nuevos SDK de Square para Flutter que te permiten recibir pagos de un Square Reader o directamente dentro de tu app.
En el área de herramientas, probablemente ya estés familiarizado con los complementos de Flutter para Android Studio y Visual Studio Code. ¿Pero habías oído hablar acerca de 2Dimensions Flare, que te permite crear excelentes animaciones vectoriales para Flutter, o de Nevercode Codemagic, que proporciona pruebas e implementaciones continuas en Google Play y App Store?
Está claro que la comunidad de Flutter es cada vez más sólida. Para comenzar, encontrarás un excelente conjunto de documentos, muestras, videos y codelabs en flutter.io, nuestro sitio oficial. Y, cuando tengas preguntas sobre el desarrollo de Flutter, problemas para informar o funciones que quieras solicitar, podrás sumarte a nuestra comunidad.

El futuro de Flutter

El lanzamiento de Flutter 1.0 para Android y iOS es solo el comienzo. De hecho, ya hay nuevas funciones en Beta que puedes probar. Si quieres agregar componentes de plataforma móvil existentes a tu app de Flutter, puedes hacerlo a través de las vistas de plataforma, que a su vez se han utilizado para crear los nuevos paquetes de WebView y Google Maps. Por el contrario, si quieres usar código de Flutter en tus apps para dispositivos móviles, puedes hacerlo con la función para agregar a la app, que te permite aprovechar tus apps publicadas utilizando el poder y la belleza de Flutter. Seguiremos agregando funciones a Flutter basadas en tus comentarios.
Desde el principio, Flutter ha sido un conjunto de herramientas de IU para todas las pantallas, no solo para las de dispositivos móviles. Mostramos nuestros planes futuros con una vista previa del trabajo en curso para brindar compatibilidad con Flutter en computadoras de escritorio que ejecutan Linux, Mac o Windows, además de dar un vistazo a un proyecto con nombre en código Hummingbird, que permite compilar el código de Flutter para ejecutarlo en la Web basada en estándares. Estos son proyectos experimentales que esperamos publicar pronto para poder recibir tus comentarios.
Aunque tenemos varios planes para el futuro, ya puedes disfrutar de muchas funciones. ¿Qué crearás con Flutter?



Probablemente ya hayas establecido algunos objetivos para este 2019. Pero ¿qué hay de tu arquitectura en la  nube? Hemos reunido algunos propósitos para Año Nuevo a fin de guiar el camino hacia una infraestructura en la nube más rápida y eficiente. Ya sea que cumplas solo uno o todos los propósitos, lo importante es que obtengas resultados positivos.


Probablemente ya hayas establecido algunos objetivos para este 2019. Pero ¿qué hay de tu arquitectura en la  nube? Hemos reunido algunos propósitos para Año Nuevo a fin de guiar el camino hacia una infraestructura en la nube más rápida y eficiente. Ya sea que cumplas solo uno o todos los propósitos, lo importante es que obtengas resultados positivos.
1. Pierde algunos kilos de datos.Esto será más divertido que eliminar los carbohidratos. ¡Lo prometemos! Muchos operadores tienen que perder peso de datos. Por ejemplo, es posible que te hayas olvidado de las copias de seguridad de Compute Engine o VM que ya no necesitas. Realiza un inventario y comunícate con los propietarios de cargas de trabajo para recuperar capacidad y ahorrar dinero.

2. Ejercita mejor tus datos.La nube está abriendo muchísimas vías nuevas para explorar todos los datos que recopilas. BigQuery es nuestra alternativa sin servidor al almacenamiento y análisis de datos en las instalaciones, y su interfaz será familiar para cualquiera que sepa SQL. Pruébalo con nuestros conjuntos de datos disponibles públicamente y, luego, echa un vistazo a las soluciones de BigQuery de nuestros socios de GCP.

3. Ahorra dinero para aprovechar mejor tu presupuesto de TI.
El modelo de precios para la nube es muy diferente del local, y al principio puede implicar una curva de aprendizaje. La calculadora de precios de GCP puede guiarte a través de los costos estimados de nuestra gama de productos. De esta forma, podrás comprender cómo funciona el pago por uso, ya sea para Compute Engine o Cloud Functions, y, luego, comenzar a presupuestar para el próximo año.

4. Aprende una nueva habilidad tecnológica.
Si deseas perfeccionar tus habilidades de tecnología en la nube, hay algunas áreas bastante interesantes que puedes explorar. Descubre cómo funciona AutoML, experimenta con la IA o familiarízate con las soluciones sin servidor consultando esta guía de inicio rápido de Cloud Functions.

5. Haz nuevos amigos, tanto en línea como en persona.
Muchas de las herramientas de la nube que se vuelven populares están basadas, en gran medida, en el concepto de apertura y mentalidad impulsadas por los usuarios. Las herramientas de código abierto significan que tus colegas desarrolladores están creando productos en tiempo real, y también puedes colaborar con código y mejorar tus soluciones. Puedes ser parte de la comunidad de Google Cloud, ya sea uniéndote a GitHub, obteniendo la certificación de Cloud o participando de Next '19.

6. Duerme más tiempo mientras vigilas tu nube.
Con una base en la nube, tu próximo paso es administrar todas estas instancias y aplicaciones. Las funciones de supervisión y registro de Stackdriver te permiten configurar alertas y utilizar los datos recopilados para realizar cambios y mejoras en tus sistemas de GCP. Para que tu infraestructura sea aún más confiable, obtén más información sobre SRE y cómo implementar sus principios.
¡No te olvides de contarnos cómo avanzas con tus propósitos!


Para proteger a tu organización y a los usuarios de amenazas conocidas, se necesitan medidas de seguridad eficientes y constantes. También se requiere trabajar de forma proactiva para identificar y abordar los riesgos emergentes.

Para proteger a tu organización y a los usuarios de amenazas conocidas, se necesitan medidas de seguridad eficientes y constantes. También se requiere trabajar de forma proactiva para identificar y abordar los riesgos emergentes.
En Google Cloud, podemos ayudarte con todo eso. Creamos productos que brindan seguridad, desde protecciones automáticas que te mantienen a salvo en segundo plano, hasta herramientas y recomendaciones que te permiten adaptar tus medidas de protección a las necesidades específicas de tu organización (para ver algunas recomendaciones, consulta nuestras publicaciones sobre cómo hacerte cargo de la seguridad). Buscamos constantemente cómo protegernos contra amenazas nuevas y emergentes, como lo demuestran las vulnerabilidades de CPU "Spectre" y "Meltdown", que nuestro equipo de Project Zero detectó a principios de 2018.
De cara a 2019, te presentamos algunas tendencias de seguridad para tener en cuenta según expertos de Google Cloud que trabajan a diario en esta industria:
Los ataques que no superen la verificación en dos pasos intentarán implementar medidas más eficaces.La verificación en dos pasos (2SV), también conocida como autenticación de dos factores (2FA), ayuda a proteger las cuentas de los usuarios y se ha convertido en un estándar para la mayoría de las aplicaciones modernas. Sin embargo, no todos los métodos de 2SV se crean de la misma forma. Los atacantes están recurriendo a nuevas maneras de superar las medidas más débiles (por ejemplo, interceptar contraseñas de un solo uso, como códigos SMS, a través de ataques de suplantación de identidad o interceptando números telefónicos). Generalmente, se trata de ataques dirigidos contra usuarios importantes, como ejecutivos, figuras políticas o administradores de la nube. Con mayores riesgos por delante, podemos asegurar que más servicios adoptarán métodos de 2SV más resistentes a la suplantación de identidad utilizando estándares FIDO. De esta forma, los usuarios podrán autenticarse con claves de seguridad, obteniendo una mayor protección contra ataques de suplantación de identidad e interceptaciones de cuentas.
— Christiaan Brand, gerente de producto (Google Cloud)

Veremos avances más amplios hacia una era "sin contraseñas", debido a la adopción generalizada de nuevos estándares.Veremos que las experiencias de inicio de sesión seguras sin contraseña aparecerán de forma masiva en 2019. Esto marcará el inicio de una amplia era "sin contraseñas", impulsada por las API de W3C y FIDO que aparecerán en los principales navegadores y plataformas de SO. En primer lugar, los sitios web comenzarán a ofrecer la posibilidad de volver a iniciar sesión simplemente presentando un dato biométrico, como una huella digital. Si bien la adopción integral de inicios de sesión sin contraseña será un proceso más lento, en el futuro, las experiencias de inicio de sesión serán simples y seguras, como la posibilidad de acceder a una cuenta en un sitio web desde una computadora con solo desbloquear tu teléfono.
— Sam Srinivas, director (Administración de Productos)

Las arquitecturas de confianza cero pasaron de la etapa de planificación a la de implementación.Las arquitecturas de "confianza cero" y cómo implementarlas ha sido un tema cada vez más importante en materia de seguridad, a medida que las organizaciones adoptan más servicios de nube críticos y se enfrentan a las crecientes demandas de los empleados en cualquier momento, en cualquier lugar y desde cualquier dispositivo. El modelo BeyondCorp de Google fue la implementación empresarial original de este concepto. Esta realidad cambiará en 2019 a medida que más proveedores ofrezcan soluciones comerciales empaquetadas y que el concepto se implemente a nivel de la arquitectura en proyectos como Istio.
— Jennifer Lin, directora (Administración de Productos)


Las soluciones de identidad dependerán cada vez más del aprendizaje automático y de la inteligencia artificial para mantener seguros a los usuarios
Los profesionales de la administración de identidades y accesos (IAM) continuarán enfrentando una mayor escala, tamaño y sofisticación de los ataques contra sus usuarios e infraestructuras. Las organizaciones adoptarán soluciones de IAM que aprovechen una gran cantidad de datos y técnicas de aprendizaje automático para optimizar el descubrimiento, la configuración y la respuesta de carga de sus equipos de TI y seguridad.

— Karthik Lakshminarayanan, director (Administración de Productos)

La encriptación autoadministrada en la nube es cada vez más popular.Las claves de encriptación autoadministrada pueden proporcionar un control adicional sobre el acceso a los datos, brindar claridad en procesos de auditoría, ayudar a cumplir con requisitos normativos o legales, o proporcionar una medida de control sobre el acceso de los proveedores. Sin embargo, en los próximos años, habrá casos de mal manejo de claves administradas por clientes que generarán la pérdida de datos importantes. Los proveedores de la nube continuarán desarrollando capacidades de administración de claves nativas, extendiendo la cobertura administrada por claves de proveedores a través de más servicios y ofreciendo a los clientes opciones de control más detalladas. Estas opciones pueden proporcionar un buen equilibrio entre el control del cliente y medidas de durabilidad y disponibilidad sólidas. Así, mientras sigan evolucionando las opciones de claves autoadministradas, los clientes buscarán cada vez más aprovechar los servicios de proveedores administrados por claves para gestionar las suyas.
— Scott Ellis, gerente de producto (Google Cloud)

Los intrusos dirigirán su atención a ataques más sofisticados en entornos nativos de la nube como los contenedores.Hemos visto ataques públicos en la implementación de contenedores, pero la mayoría de ellos se enfocaron en actos imitados o de "poca importancia" que probablemente verías en una VM (p. ej., configuraciones erróneas, credenciales y secretos en código público, etc.). Piensa en ellos como puertas que accidentalmente se dejaron abiertas. A medida que aumente la adopción de contenedores, comenzaremos a ver ataques más avanzados específicos de las arquitecturas y vulnerabilidades de estos elementos. Muchos administradores buscarán servicios sólidos administrados en la nube que ofrezcan las mejores prácticas en seguridad de contenedores de forma predeterminada.
— Maya Kaczorowski, gerenta de producto (Google Cloud)

Las vulnerabilidades en el software de código abierto serán cada vez más comunes y requerirán pruebas más rigurosas.La introducción de vulnerabilidades en software de código abierto a través de repositorios de código fuente es un método de ataque efectivo, ya que muchos usuarios intermedios usan software de código abierto sin inspeccionarlo ni probarlo. Un compromiso generalizado con respecto a este tema no es improbable, y podría ser precisamente lo que impulse a más empresas a utilizar herramientas de análisis de vulnerabilidades continuos.
— Matthew O’Connor, gerente de producto (OCTO)

Como resultado del GDPR, se duplicarán los incidentes de datos informados en sistemas heredados del año anterior.El GDPR de la UE requiere que las organizaciones informen los incidentes de datos que involucran información de identificación personal (PII) a las autoridades de protección de datos, ya que, de lo contrario, podrían recibir costosas multas. Solo en el Reino Unido, se registró un aumento del 30% en las infracciones de datos correspondiente al primer semestre de 2018, en comparación con todo 2017. Es probable que las primeras multas por no cumplir con el GDPR se emitan en 2019, y la mayor transparencia que resulte del escrutinio público y regulatorio puede resaltar la fragilidad de los sistemas heredados y, en última instancia, impulsar la adopción de la nube, donde las herramientas y los procesos de gestión de la privacidad empresarial se han desarrollado específicamente para satisfacer las disposiciones del GDPR.
— James Snow, administrador de Ingeniería (Seguridad y Cumplimiento)

Las empresas altamente reguladas seleccionarán a proveedores de la nube que proporcionen servicios de supervisión y control en tiempo real para acceder a sus cargas de trabajoSi bien uno de los principales beneficios de trabajar en la nube pública es tener una infraestructura administrada propia, muchos clientes han tenido una visibilidad y un control limitados sobre la actividad realizada por su proveedor de la nube. En 2019, las empresas, especialmente aquellas de industrias altamente reguladas, obtendrán cada vez más visibilidad y control total respecto de qué acciones pueden tomar los administradores de la nube sobre sus datos. Estos clientes podrán quedarse más tranquilos, ya que tendrán el control de sus datos y cargas de trabajo.
— Joseph Valente and Michee Smith, gerentes de producto (Google Cloud)


Los dispositivos conectados marcan el camino hacia la era de la informática inteligente. Como parte de esta evolución, la Internet de las cosas (IoT) desempeña un papel fundamental en la construcción de un mundo más sofisticado basado en datos. 

En un análisis reciente, Gartner predijo tasas de crecimiento de dos dígitos en 2019 para extremos de IoT e inversiones en estadísticas avanzadas. El uso de datos globales, consumidos en tiempo real directamente desde dispositivos, representa una oportunidad sin precedentes para diseñar y desarrollar soluciones sofisticadas enfocadas en datos.

La capacitación de Google Cloud Self Paced Labs ahora incluye una serie de prácticas diseñadas para ayudarte a aprovechar la tecnología más reciente de IoT. IoT in the Google Cloud incluye una introducción exhaustiva, con ejemplos reales que te muestran cómo crear una solución. Como no todo el mundo tiene un dispositivo de IoT al alcance de la mano, las prácticas muestran cómo hacerlo con la transmisión de datos desde dispositivos de hardware simulados, completamente autónomos en la nube, a través de tu navegador web.

Esta entrada de blog pretende introducir los elementos más comunes a la hora de establecer un flujo de trabajo conectado entre un dispositivo y Google Cloud Platform (GCP).



Publicado por Vlad Radu, gerente de producto (Play), y Diana Wong, gerenta de producto (Android)
Las CPU de 64 bits brindan experiencias más rápidas y enriquecidas para tus usuarios. Agregar una versión de 64 bits de tu app proporciona mejoras de rendimiento, abre paso a futuras innovaciones y te prepara para los dispositivos con hardware exclusivo de 64 bits.
     

Publicado por Vlad Radu, gerente de producto (Play), y Diana Wong, gerenta de producto (Android)
Las CPU de 64 bits brindan experiencias más rápidas y enriquecidas para tus usuarios. Agregar una versión de 64 bits de tu app proporciona mejoras de rendimiento, abre paso a futuras innovaciones y te prepara para los dispositivos con hardware exclusivo de 64 bits.
Queremos ayudarte a hacer planificaciones y a que sepas todo lo necesario. Hemos brindado compatibilidad con CPU de 64 bits desde Android 5.0 Lollipop y en 2017 anunciamos que las apps que utilicen código nativo deberán proporcionar una versión de 64 bits (además de la 32 bits). Hoy proporcionamos información más detallada y plazos estimados para que realizar una transición en 2019 sea lo más fácil posible.

Requisito de 64 bits: qué implica para los desarrolladores

A partir del 1 de agosto de 2019:
  • Todas las apps nuevas y actualizaciones que incluyan código nativo deberán proporcionar versiones de 64 bits, además de las de 32 bits, cuando se publiquen en Google Play.
  • Extensión: Google Play seguirá aceptando actualizaciones exclusivas de 32 bits para juegos que usen Unity 5.6 o una versión posterior hasta agosto de 2021.
A partir del 1 de agosto de 2021:
  • Google Play dejará de publicar apps sin versiones de 64 bits en dispositivos compatibles con esa capacidad, lo que significa que ya no estarán disponibles en Play Store para esos dispositivos.
  • Esto incluirá juegos creados con Unity 5.6 o versiones posteriores.
El requisito no se aplica a:
  • APK o paquetes de apps dirigidos explícitamente a Wear OS o Android TV, que son factores de forma que actualmente no admiten código de 64 bits.
  • APK o paquetes de apps que no se distribuyan a dispositivos con Android 9 Pie o versiones posteriores.
No haremos cambios a nuestra política sobre la compatibilidad con 32 bits. Play seguirá ofreciendo apps a dispositivos de esta capacidad. Por lo tanto, las apps con código nativo de 32 bits también deberán tener una versión adicional de 64 bits.

Cómo prepararse para el requisito de 64 bits

Prevemos que para la mayoría de los desarrolladores, el cambio a 64 bits será sencillo. Muchas apps están escritas en código no nativo (como Java o Kotlin) y, en consecuencia, no necesitan que se modifique su código.
Aviso para todos los desarrolladores: Aquí hay una descripción general de los pasos que deberás seguir para cumplir con los requisitos de 64 bits. Si prefieres obtener una descripción más detallada de este proceso, consulta nuestra documentación específica.
Inspecciona tu APK o paquete de apps en busca de código nativo. Puedes comprobar si hay archivos .so usando APK Analyzer. Identifica si están creados a partir de tu propio código o si los importó un SDK o biblioteca que estás utilizando. Si no encuentras ningún archivo .so en tu APK, significa que ya es compatible con 64 bits.
Habilita arquitecturas de 64 bits y vuelve a compilar el código nativo (archivos .so) que haya importado tu propio código. Para obtener más información al respecto, consulta la documentación.
  • Actualiza cualquier SDK y biblioteca a versiones compatibles de 64 bits, si es necesario. Si no hay ningún elemento disponible, comunícate con el propietario del SDK o la biblioteca. Estamos trabajando con los principales propietarios de bibliotecas a fin de que puedan brindar compatibilidad con 64 bits.
  • Una vez que hayas vuelto a compilar tu app, ejecuta pruebas para buscar problemas locales.
  • Implementa lanzamientos progresivos usando pistas de prueba a fin de obtener resultados más precisos.
Si eres desarrollador de juegos: Los tres motores más utilizados actualmente son compatibles con 64 bits (Unreal y Cocos2d desde 2015, y Unity desde 2018). Sabemos que migrar desde un motor de juegos de terceros es un proceso intensivo con largos plazos.
Ya que Unity comenzó recientemente a brindar compatibilidad con 64 bits en las versiones 2017.4 y 2018.2, otorgaremos una extensión automática a los juegos existentes que usen versiones 5.6 o posteriores hasta agosto de 2021. Unity ofrece guías que pueden ayudarte en el proceso de actualización a una versión compatible con 64 bits.
Si eres propietario de un SDK o biblioteca: Actualiza tu contenido a fin de cumplir con las normas de 64 bits lo antes posible. De esta manera, tu equipo de desarrolladores podrá adaptarse al proceso sin problemas. Registra tu SDK para recibir actualizaciones sobre las últimas herramientas e información que podría serte útil con tus clientes.

Próximos pasos

Si ya incluyes versiones compatibles con 64 bits, ¡gracias y excelente trabajo! Si aún no lo has hecho, comienza a trabajar en esto lo antes posible. A medida que nos acerquemos a la fecha límite, actualizaremos nuestra documentación para desarrolladores con más información sobre cómo verificar si tu app cumple con los requisitos.
Esperamos con entusiasmo lo que las CPU de 64 bits ofrecerán en áreas como la inteligencia artificial, el aprendizaje automático y los dispositivos móviles inmersivos. La compatibilidad con 64 bits prepara el ecosistema para la innovación, de la mano de funciones de cómputos avanzadas y de los futuros dispositivos Android que solo admitirán código de esta capacidad.
¿Qué tan útil te resultó esta entrada de blog?



Ilustración de Virginia Poltrack




Hay muchas consideraciones y recomendaciones para manejar el trabajo en segundo plano, tal como se indica en esta serie de entradas de blog de Google. Una de las llamadas recurrentes es una biblioteca de ...

Ilustración de Virginia Poltrack




Hay muchas consideraciones y recomendaciones para manejar el trabajo en segundo plano, tal como se indica en esta serie de entradas de blog de Google. Una de las llamadas recurrentes es una biblioteca de Android Jetpack denominada WorkManager, que amplía las capacidades de la API del marco de trabajo de JobScheduler y es compatible con Android 4.0 y versiones posteriores (API 14+). Hoy se lanzó la versión Beta de WorkManager.
Esta entrada de blog es la primera de una nueva serie enfocada en ese recurso. Exploraremos los conceptos básicos de WorkManager, cómo y cuándo usarlo, y lo que sucede detrás de escena. Luego, nos sumergiremos en casos de uso más complejos.

¿Qué es WorkManager?

WorkManager es un componente de arquitectura de Android que forma parte de Android Jetpack, una nueva forma de crear aplicaciones modernas para Android.
WorkManager es una biblioteca de Android que ejecuta en segundo plano procesos diferibles cuando se cumplen restricciones del trabajo.
WorkManager está destinado a tareas que requieren una garantía de que el sistema las ejecutará incluso si se cierra la app.
En otras palabras, WorkManager proporciona una API amigable con la batería que encapsula años de evolución de las restricciones de comportamiento de Android en segundo plano. Este es un aspecto crítico para las aplicaciones de Android que necesitan ejecutar tareas en segundo plano.

Cuándo usar WorkManager

WorkManager maneja los procesos en segundo plano que deben ejecutarse cuando se cumplen varias restricciones, independientemente de si el proceso de la aplicación está activo o no. El trabajo en segundo plano puede iniciarse cuando la aplicación está en segundo plano, cuando está en primer plano o cuando se inicia en primer plano, pero pasa a segundo. Independientemente de lo que esté haciendo la aplicación, el proceso en segundo plano debe continuar ejecutándose, o reiniciarse si Android finaliza su proceso.
Una confusión común acerca de WorkManager es que es para tareas que deben ejecutarse en un subproceso de "segundo plano", pero no necesitan sobrevivir a la finalización del proceso. Este no es el caso. Existen otras soluciones para este caso de uso, como las coroutinas de Kotlin, ThreadPools o bibliotecas como RxJava. Puedes encontrar más información sobre este caso de uso en la guía de procesamiento en segundo plano.
Hay muchas situaciones diferentes en las que necesitas ejecutar un proceso en segundo plano y, por lo tanto, diferentes soluciones para hacerlo. Esta entrada de blog sobre procesos en segundo plano proporciona mucha información sobre cuándo usar WorkManager. Echa un vistazo a este diagrama del blog:

Diagrama de la ejecución moderna en segundo plano

En el caso de WorkManager, es mejor para procesos en segundo plano que deben finalizar y son diferibles.
Para empezar, pregúntate lo siguiente:
  • ¿Es necesario finalizar este proceso?
    Si el usuario cierra la aplicación, ¿se debe completar la tarea? Como ejemplo, veamos una aplicación para tomar notas que tiene una función sincronización remota. Una vez que terminas de escribir, esperas que la aplicación sincronice el contenido con un servidor de backend. Esto sucederá incluso si cambias a otra aplicación y el SO necesita cerrar la app para recuperar de memoria. También debería ocurrir incluso si reinicias el dispositivo. WorkManager garantiza que finalicen las tareas.
  • ¿Esta tarea es diferible?
    ¿Podemos ejecutar la tarea más tarde o solo es útil si se ejecuta justo ahora? Si la tarea se puede ejecutar más tarde, entonces es diferible. Volviendo al ejemplo anterior, sería bueno que tus notas se carguen inmediatamente, pero si esto no es posible y la sincronización se produce más tarde, tampoco es un problema. WorkManager respeta las restricciones en segundo plano del SO e intenta ejecutar tus procesos de manera eficiente.
Por lo tanto, como lineamiento, WorkManager está diseñado para tareas que requieren una garantía de que el sistema las ejecutará, incluso si se cierra la app. No está diseñado para procesos en segundo plano que requieran ejecución inmediata o que se ejecuten en un momento exacto. Si necesitas que tu trabajo se ejecute a una hora exacta (como un reloj de alarma o un recordatorio de evento), usa AlarmManager. Para los procesos que deben ejecutarse de inmediato, pero que son de larga duración, a menudo deberás asegurarte de que se ejecuten cuando estén en primer plano, ya sea limitando la ejecución al primer plano (en cuyo caso estos procesos ya no son tareas en segundo plano) o usando un Servicio en segundo plano.
WorkManager puede y debe sincronizarse con otras API cuando necesites desencadenar algunos procesos en segundo plano durante escenarios más complejos:
  • Si tu servidor activa el proceso, WorkManager puede sincronizarse con Firebase Cloud Messaging.
  • Si estás escuchando emisiones usando un receptor de difusión y luego necesitas activar un proceso de larga duración, puedes usar WorkManager. Ten en cuenta que WorkManager es compatible con muchas restricciones que normalmente aparecen como transmisiones: en estos casos, no es necesario que registres tus propios receptores de transmisión.

¿Por qué usar WorkManager?

WorkManager ejecuta procesos en segundo plano mientras se ocupa de problemas de compatibilidad y recomendaciones para proteger la batería y el sistema.
Además, utilizando WorkManager, puedes programar tanto tareas periódicas como complejas cadenas de tareas dependientes: el trabajo en segundo plano se puede ejecutar en paralelo o secuencialmente, donde puedes especificar un orden de ejecución. WorkManager maneja a la perfección el paso de entrada y salida entre tareas.
También puedes establecer criterios sobre cuándo debe ejecutarse la tarea en segundo plano. Por ejemplo, no hay razón para realizar una solicitud HTTP a un servidor remoto si el dispositivo no tiene una conexión de red. Por lo tanto, puede establecer una restricción para que la tarea solo se pueda ejecutar cuando haya una conexión.
Como parte de la ejecución garantizada, WorkManager se encarga de mantener tu trabajo en los reinicios del dispositivo y si el proceso se detiene por la fuerza. También puedes definir fácilmente estrategias de reintento si tu proceso se detiene y deseas volver a intentarlo más tarde.
Finalmente, WorkManager te permite observar el estado de la solicitud de trabajo para que puedas actualizar tu UI.
Para resumir, WorkManager ofrece los siguientes beneficios:
  • Es compatible con diferentes versiones de SO.
  • Sigue las recomendaciones para proteger el sistema.
  • Es compatible con tareas únicas y periódicas asíncronas.
  • Admite tareas encadenadas con entrada y salida.
  • Permite establecer restricciones sobre cuándo se ejecuta la tarea.
  • Garantiza la ejecución de tareas, incluso si se reinicia la aplicación o el dispositivo.
Veamos un ejemplo específico en el que creamos un flujo de procesamiento de tareas concurrentes que aplica filtros a una imagen. El resultado se envía a una tarea de compresión y, luego, a una de carga.
Podemos definir un conjunto de restricciones para estas tareas y especificar cuándo se pueden ejecutar:

Cadena de tareas de muestra con restricciones

Todos estos elementos definen una secuencia precisa: por ejemplo, no sabemos el orden en que se filtrarán las imágenes, pero sabemos que el worker de Compress comenzará solo después de que todos los de Filter se hayan completado.

Cómo funciona el planificador de WorkManager

Para garantizar la compatibilidad con la API de nivel 14, WorkManager elige una forma adecuada de programar una tarea en segundo plano según el nivel de API del dispositivo. WorkManager puede usar JobScheduler o una combinación de BroadcastReceiver y AlarmManager.

Cómo determina WorkManager qué planificador usar

¿WorkManager está listo para su uso en producción?

Por el momento, WorkManager está en fase Beta. Esto significa que no habrá cambios de API importantes en esta revisión.
Cuando WorkManager se publique como estable, será la forma preferida de ejecutar tareas en segundo plano. Por esta razón, este es un gran momento para comenzar a utilizar WorkManager y ayudar a mejorarlo.
Gracias a Lyla Fujiwara.

Recursos de WorkManager


Cómo agregar Google Maps a Flutter

La semana pasada, en Flutter Live, mostramos por primera vez la integración de Google Maps en Flutter. El paquete se encuentra disponible como google_maps_flutter ...

Cómo agregar Google Maps a Flutter

La semana pasada, en Flutter Live, mostramos por primera vez la integración de Google Maps en Flutter. El paquete se encuentra disponible como google_maps_flutter en pub.dartlang.org. La API está cambiando para que pueda comunicarse mejor con Flutter, y tendrás más novedades cuando eso esté listo. Mientras tanto, si quieres jugar con Google Maps en Flutter usando la API actual basada en el controlador, aquí tienes un instructivo.
Este artículo muestra paso a paso cómo agregar un widget de Google Maps a tu aplicación de Flutter. Esto es lo que harás hoy:


Configuración

El primer paso es agregar el complemento de Flutter de Google Maps como una dependencia en el archivo pubspec.yaml.

Una vez que hagas eso, deberás ejecutar los paquetes de Flutter.
El siguiente paso es obtener una clave de API. Para ello, ve al sitio web de Google Maps Platform y haz clic en "EMPEZAR". Marca la casilla de verificación de Maps y, luego, haz clic en "Continuar".


Elige un proyecto existente o crea uno nuevo, y completa los pasos restantes en este diálogo para obtener la clave de la API.
A continuación, agrega la clave a tu app de Flutter. Para Android, deberás especificar la clave de la API en el manifiesto de la aplicación (android/app/src/main/AndroidManifest.xml) de la siguiente manera:

En el caso de iOS, especifica la clave de la API en el archivo delegado de la aplicación (ios/Runner/AppDelegate.m):

En iOS, también debes habilitar la previsualización de vistas insertadas, así que agrega una propiedad booleana al archivo Info.plist de la app (ios/Runner/Info.plist) con la clave io.flutter.embedded_views_preview y el valor "true":

Cómo agregar un widget de GoogleMap

Nota: La API de complemento que se describe más abajo es previa a la versión 1.0 y sufrirá modificaciones.
¡Ahora puedes agregar un widget de GoogleMap! Ejecuta flutter clean para asegurarte de que los cambios en la clave de la API se apliquen en la siguiente compilación. Luego, agrega un widget de GoogleMap que cubra toda la pantalla:

Información importante:
  • onMapCreated: Método requerido al que se llama durante la creación del mapa y que toma un elemento MapController como parámetro.
  • mapController: Esencialmente, es el vínculo a todas las interacciones y configuraciones del mapa (al menos en esta iteración de la API) Este patrón es similar a otros controladores disponibles en Flutter, como TextEditingController.
  • options: Almacena la configuración y preferencias del mapa, como cameraPosition, mapType, gestos habilitados o inhabilitados, etc. Consulta el código fuente del complemento para ver una lista de opciones disponibles.
  • cameraPosition: Controla a qué parte del mundo deseas que apunte el mapa.
Si ejecutas la app en este punto, debería verse así:


¿Qué puedes hacer con ella?

Ahora tienes Google Maps en tu app, pero probablemente quieras hacer algo más interesante. ¿Qué opinas sobre poner los widgets de Flutter en la parte superior del mapa, cambiar su apariencia o agregar marcadores de posición? ¡Puedes hacer todo eso!

Cómo agregar un widget en la parte superior del mapa

Es importante recordar que el widget de GoogleMap es solo un widget de Flutter, lo que significa que puedes hacer lo mismo que con cualquier otro widget. Esto incluye colocar otro widget encima de él. Al colocar el widget de GoogleMap dentro de uno de Stack, puedes colocar otros widgets de Flutter encima del widget de mapa:

Cómo cambiar la apariencia del mapa

En este momento, el botón para agregar no realiza ninguna acción interesante. Cambia eso para que cuando se presione, el botón alterne entre dos tipos de mapas diferentes: vista normal y satelital. Como se mencionó anteriormente, para interactuar con el mapa, debes usar el elemento MapController. Agrega un método que use el controlador del mapa para actualizar las opciones:

Ahora reemplaza "() => print(‘button pressed’)" por "_onMapTypeButtonPressed".
child: FloatingActionButton(
  onPressed: _onMapTypeButtonPressed,
  ...),


Cómo agregar un marcador

¿Y si pudieras crear un botón que, cuando lo presiones, agregue marcadores en el mapa? Siguiendo el mismo patrón que antes, agrega un botón a la pila. Coloca otro FloatingActionButton dentro del widget de Align del método de compilación:

Ahora, una vez más, implementa un método que use el MapController para manipular el mapa. En este caso, quieres agregar marcadores de lugar, así que realiza una llamada al elemento addMarker de MapController.

También debes agregar trackCameraPosition: true a GoogleMapOptions en GoogleMapWidget. Esto permite que mapController rastree la posición actual de la cámara del mapa. mapController.cameraPosition.target muestra la posición de LatLng en el centro del widget de GoogleMap. Esta posición se usa en el código anterior para establecer la posición del marcador en el mapa.
GoogleMap(
  ...
  GoogleMapOptions(
    trackCameraPosition: true,
    ...
  ),
),


Puedes personalizar los marcadores con diferentes colores, como BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueViolet), o incluso con íconos personalizados, como BitmapDescriptor.fromAsset(‘assets/asset_name.png).

Código main.dart final


¿Qué más puedes hacer?

Una vez más, el widget de GoogleMap es solo un widget. Esto significa que puedes colocar widgets encima de él (como lo hiciste), dentro de otros widgets (como un ListView, por ejemplo), o si quieres algo de acción, incluso podrías ponerlo en un widget de Transform*.


Hay tantas posibilidades como quieras. Consulta la app de Place Tracker en flutter/samples para obtener una demostración más completa de Google Maps. También puedes ver la app de ejemplo de google_maps_flutter para descubrir cómo usar el complemento.
* Por el momento, no se puede usar widget de Transform para girar el mapa en iOS. Probablemente se habilite en el futuro, pero no es una prioridad actualmente.
También recuerda que este controlador basado en la API no es el final. Se está desarrollando el complemento de google_maps_flutter para que se adapte mejor a Flutter. Actualizaremos este artículo una vez que ese trabajo esté hecho.



Gran parte de lo que hacemos en la oficina del director de Tecnología de Google Cloud (OCTO) es ayudar a los clientes a planificar y ejecutar sus migraciones a la nube, que a menudo son parte de un esfuerzo de transformación mayor. La mayoría de los CIO consideran que la migración a la nube es una tarea esencial, pero aún algo desalentadora. Hemos resumido las conversaciones que tuvimos con CIO, CTO y su personal técnico en varios marcos de trabajo que pueden ayudar a reducir el entusiasmo y la complejidad técnica con el objetivo de ayudar a implementar una estrategia que empodere tanto a las empresas como a las soluciones de TI. Llamamos a uno de esos marcos de trabajo "subir contenido o adaptarlo a la nube". Y no nos referimos a la filosofía laboral rígida de algunas consultoras.

El problema con las soluciones de TI locales

Si bien la infraestructura de las soluciones de TI locales ha mejorado mucho en las últimas dos décadas (por ejemplo, a través de la virtualización o las redes definidas por software), las soluciones empresariales siguen siendo relativamente inflexibles, laboriosas y lentas para aprovisionar o configurar infraestructura. En un entorno de movimiento lento, este tipo de configuración era adecuada porque las demandas empresariales podían predecirse con bastante anticipación y los picos repentinos de carga de trabajo eran raros. Sin embargo, los disruptores digitales y las presiones de costos obligan a las empresas y a las soluciones de TI a avanzar más rápido, lo que supone una importante presión sobre las tecnologías y procesos existentes. 

Migrar a la nube: ¿subir contenido, adaptarlo o ambos métodos?

Se ha demostrado que un modelo operativo de TI basado en la nube ofrece ventajas significativas en términos de despliegue rápido, escalabilidad elástica, operaciones resistentes y seguridad. Sin embargo, las grandes empresas no pueden simplemente despertarse un día con todas sus aplicaciones ejecutándose en la nube. Por lo tanto, el traspaso de cada empresa a la nube es durante el principio un escenario de nube híbrida, donde algunas cargas de trabajo permanecen en las instalaciones y otras se ejecutan en la nube.
Además, muchas empresas confían en la capacidad informática y el almacenamiento de datos distribuidos geográficamente que no se pueden implementar desde un solo centro de datos en la nube. Por ejemplo, la mayoría de las empresas minoristas o de fabricación tienen una fuerte huella de TI en sucursales o plantas debido a consideraciones de latencia o bien para garantizar operaciones continuas en caso de una falla de red. Por lo tanto, cuando planificas una migración a la nube empresarial, no puedes simplemente mover toda tu infraestructura de la noche a la mañana, sino que debes adoptar un enfoque más pragmático que diferencie cuidadosamente datos de cargas de trabajo.
Un modelo que puede ayudar a las empresas a trazar su viaje de adopción de la nube describe el proceso de migración a través de dos ejes: subir y adaptar.

cloud adoption journey.png

Subir contenido en pila

Una de las cosas que puedes hacer es subir tus aplicaciones en pila. Como paso inicial, puedes pasar de ejecutar aplicaciones monolíticas en servidores dedicados a un modelo de plataforma como servicio que implemente aplicaciones y servicios utilizando contenedores administrados por Kubernetes o Google Kubernetes Engine (GKE). La llamada "implementación sin servidor", por ejemplo mediante Cloud Functions, va un paso más allá con funciones de aplicación individuales que ocultan toda la infraestructura que se encuentra en segundo plano.
Subir contenido en pila tiene varias ventajas:
  • Se automatiza la implementación de aplicaciones, lo que facilita el proceso de agregar o quitar capacidad según sea necesario.
  • Las operaciones también se vuelven más resistentes debido a que, en caso de fallas, se pueden implementar rápidamente las nuevas instancias, lo que permite a las plataformas como servicio o sin servidor resistir fallas sin que eso tenga un impacto visible en el cliente.
  • Gracias a las unidades desplegables más pequeñas, se puede utilizar el hardware de manera más eficiente, lo que reduce los costos de ejecución.
  • Por último, las aplicaciones se vuelven más portátiles cuando están mejor aisladas de los detalles de infraestructura, ya que sus contenedores pueden implementarse en una variedad de elementos. Esto abre camino a un escenario de nube híbrida que proporciona un entorno de ejecución de servicios consistente en todo momento, incluidos los proveedores de nube, centros de datos locales, sucursales y dispositivos remotos.
Como aspecto negativo, subir contenido en pila requiere que cambies la forma en que creas aplicaciones y manejas la infraestructura que las admite.

Adaptar para la nube

La segunda opción es retirar, modificar y rediseñar las aplicaciones existentes sin cambios en la nube, por ejemplo, transfiriendo las máquinas virtuales a Compute Engine o reemplazando los archivos de datos locales con Cloud Storage. El cambio en las cargas de trabajo en la nube se puede simplificar e incluso automatizar, por ejemplo, mediante el uso de herramientas como Velostrata.
A pesar de que no se modifican las aplicaciones, moverlas de un centro de datos local a la nube y cambiar el modelo operativo a uno más automatizado también tiene varias ventajas:
  • Las soluciones de escalabilidad económicas permiten realizar operaciones más rentables.
  • La disciplina de parches automatizada mejora la seguridad, ya que garantiza que no se ejecute ningún software con vulnerabilidades conocidas.
  • Una mayor transparencia permite una administración más eficiente de los recursos de TI, por ejemplo, mediante el dimensionamiento de servidores o la detección y el retiro de recursos no utilizados.
Mudarse a la nube transforma la manera en que opera una empresa y adquiere la infraestructura de TI de un modelo basado en recursos a uno basado en el uso. Sin embargo, no todo es blanco o negro. Al igual que en la transformación de arquitecturas de aplicaciones para subir contenido en pila hacia la de servicios y sistemas nativos de la nube, adaptar el contenido puede considerarse como una transformación progresiva en busca de operaciones centradas en la nube.
  • Quitar aplicaciones existentes y replanificarlas en la infraestructura de la nube minimiza el esfuerzo inicial, lo que evita los costos de reurbanización y permite a una empresa transformar sus procesos de adquisición y escalabilidad de infraestructura, al mismo tiempo que minimiza el impacto en los modelos de operaciones existentes.
  • Ajustar los modelos de operaciones para aumentar el uso de la automatización y las herramientas nativas de la nube acelera la transformación general y maximiza el valor de los servicios de infraestructura abstraídos.
  • Por último, desarmar los elementos de las aplicaciones para aprovechar los servicios en la nube administrados, como migrar de las bases de datos My SQL autogestionadas a una base de datos como servicio administrada por el proveedor, requiere un esfuerzo adicional, aunque sienta las bases para ir más allá de ver la nube como otro proveedor de infraestructura.
No solo es posible combinar ambos métodos, sino que también es lo recomendado. Consideramos que es un modelo híbrido nativo en la nube, en el que las aplicaciones se implementan como contenedores o funciones, y se pueden cambiar fácilmente de la nube a las instalaciones, según sea necesario, al mismo tiempo que se mantiene un marco de administración, implementación y tiempo de ejecución coherente.

Cómo trazar una ruta de migración

No hay una sola ruta a la nube, ni para empresas ni aplicaciones individuales. Lamentablemente, inspiradas en la esperanza de simplicidad, las empresas suelen asumir que todas las migraciones de carga de trabajo seguirán una trayectoria común. Más bien, te recomendamos que uses un marco que fomente la flexibilidad. El marco de trabajo mixto puede ayudar a una organización de TI y a sus líderes a caracterizar cómo pueden beneficiarse de la migración de sus servicios o cargas de trabajo. El marco actúa como un patrón general que resalta la continuidad de enfoques que se pueden explorar. No todos los componentes de una sola carga de trabajo seguirán la misma ruta, ni deberían hacerlo.
Ten en cuenta algunas preguntas:
  • ¿Qué elementos de una aplicación o servicio se beneficiarían más de un enfoque basado en eventos y sin servidor?
  • ¿Qué elementos de un servicio requieren lanzamientos rápidos de código o la capacidad de validar nuevas funciones mediante pruebas A/B (lo que significa que una nueva versión del software está disponible para un porcentaje de usuarios)?
  • ¿Qué elementos cambian con poca frecuencia, pero se beneficiarían de la implementación y escalabilidad automatizadas?
Con las respuestas a estas preguntas, puedes comenzar a desarmar las cargas de trabajo (si es posible) y modificarlas según el marco que prefieras, presentando así a tu organización un enfoque de migración pragmático que maximice el valor.

Cómo aplicar el modelo

Cuando una empresa minorista importante comenzó a migrar a GCP, el modelo de subir o adaptar los ayudó a decidir qué partes de su contenido de TI debía seguir qué camino.
El front-end orientado a los usuarios del minorista requería frecuentes lanzamientos de funciones para mantenerse a la vanguardia en un mercado competitivo a fin de evaluar los niveles de adopción y el valor de las nuevas implementaciones. Las pruebas A/B eran necesarias para satisfacer estas necesidades, mientras que una canalización automatizada de CI/CD implementaba aplicaciones nativas en la nube mediante Google Kubernetes Engine (GKE), subiéndolas en pila y cargándolas a la nube.
Con el paso del tiempo, el procesamiento de aplicaciones de nivel intermedio del minorista también podría beneficiarse de la refactorización y la nueva arquitectura, aunque se podría generar un valor más inmediato al cambiar a un modelo de escalabilidad automático y obtener eficiencias operativas en la nube. Estas aplicaciones fueron transferidas a Google Compute Engine.
Los sistemas de catálogo de back-end del minorista cambian muy raramente y se alojaron en sistemas bien entendidos y de fácil mantenimiento. Para enfocar su energía inicial, decidieron mantenerlos en su lugar hasta que puedan reemplazarlos por completo en el futuro.
Adoptar este enfoque permitió a la empresa minorista minimizar el tiempo y el esfuerzo necesarios para lograr su objetivo principal: una rápida iteración de la experiencia del cliente que se estaba volviendo obsoleta. También obtuvieron eficiencias operativas y de capital, y estuvieron en una buena posición para migrar sus datos de catálogo a la nube cuando el momento y el precio eran los adecuados.

enterprise_IT.png

Conclusión

Al planificar una migración a la nube, trazar un camino para las cargas de trabajo individuales y los elementos arquitectónicos en el marco elegido permite a los responsables de la toma de decisiones de TI enfocarse en los beneficios que se obtienen al volver a la plataforma, a la nueva arquitectura o a una combinación de ambas.  También comunica las rutas de migración con el paso del tiempo de una manera accesible que puede compartirse con un amplio público, tanto empresarial como de TI. Es típico y, de hecho, recomendado que diferentes componentes tomen caminos únicos. Cualquiera sea la mejor ruta, Google Cloud Platform incluye los productos y las herramientas de migración necesarios, que van desde el lift-and-shift a Compute Engine, las aplicaciones de portabilidad a GKE en las instalaciones o en la nube, o la implementación de servicios nativos a funciones de la nube.

Próximos pasos

Los marcos simples pero evocadores, como los que vimos, pueden ayudar a los encargados de tomar decisiones de TI a navegar por la complejidad inevitable de una migración a la nube. Como cualquier buen modelo, la simplicidad es una característica, no un error, ya que ayuda a mantener el enfoque en el resultado deseado y se comunica fácilmente a una variedad de públicos.
Trazar los caminos de adopción para diferentes partes de tu contenido de TI es un primer paso importante. En los siguientes artículos, profundizaremos un poco más y exploraremos algunas de las transformaciones de la tecnología y la arquitectura que implica cada uno de estos caminos.





  • Verificar etiquetas de imágenes: ¿Es dulce de leche, arequipe o mermelada? Enséñanos qué es. Elige una de las tareas y verifica que las fotos estén etiquetadas correctamente.
  • Traducir y validar traducciones: ¿Cómo se dice? Si sabes otros idiomas, cuéntanos si las traducciones a tu idioma son correctas. ¡Entrena tus capacidades y haz que todos conozcan tu lenguaje!
  • Analizar sentimientos: ¿Feliz, neutral o triste? Dinos qué emoción se expresa en cada frase y ayudamos a mejorar aplicaciones como Google Maps para que siempre sepa cuál es el mejor restaurante o el mejor servicio.
  • Subir imágenes: ¿Te encantan la comida, la ropa, los monumentos y los paisajes que ves todos los días en tu comunidad? ¡Ayúdanos a que todos los conozcan! Carga tus fotos y etiquétalas para que podamos conocer tu ciudad y tu cultura.

A pesar de los esfuerzos que la compañía hace todos los días para ofrecerles la mejor experiencia a sus usuarios, lo cierto es que la mayoría de la información que nutre productos tan populares como el buscador o Translate viene de América del Norte o de Europa Occidental. Ese vacío de información hace que la experiencia para los usuarios de otras regiones del mundo, como Latinoamérica, no sea tan buena como podría serlo. Pero Google tiene una herramienta para solucionar esto, y necesita de tu ayuda.


Crowdsource es una divertida herramienta, que puedes bajar como una aplicación desde Play Store o utilizar desde tu navegador, con la que puedes entrenar al machine learning de Google para que aprenda contenidos locales y lograr que tu comunidad, y lo que más amas de ella, sea conocido en todo el mundo.

La herramienta funciona como un juego: Crowdsource tiene diferentes desafíos, que incluyen traducir, etiquetar y subir imágenes, reconocer escritura y analizar sentimientos en frases. El objetivo es mostrarle a la inteligencia artificial las sutilezas y las formas de hablar típicas de cada región del mundo.



Además de colaborar para que los productos usados por cientos de millones de personas en el mundo sean mejores cada día y tengan información particular de tu rincón del planeta, al participar en Crowdsource también puedes ganar insignias exclusivas, liderar grandes eventos y ser el campeón de tu comunidad.

Crowdsource tiene varias categorías de actividades. Las más destacadas son estas:
  • Verificar etiquetas de imágenes: ¿Es dulce de leche, arequipe o mermelada? Enséñanos qué es. Elige una de las tareas y verifica que las fotos estén etiquetadas correctamente.
  • Traducir y validar traducciones: ¿Cómo se dice? Si sabes otros idiomas, cuéntanos si las traducciones a tu idioma son correctas. ¡Entrena tus capacidades y haz que todos conozcan tu lenguaje!
  • Analizar sentimientos: ¿Feliz, neutral o triste? Dinos qué emoción se expresa en cada frase y ayudamos a mejorar aplicaciones como Google Maps para que siempre sepa cuál es el mejor restaurante o el mejor servicio.
  • Subir imágenes: ¿Te encantan la comida, la ropa, los monumentos y los paisajes que ves todos los días en tu comunidad? ¡Ayúdanos a que todos los conozcan! Carga tus fotos y etiquétalas para que podamos conocer tu ciudad y tu cultura.

El gran objetivo detrás de Crowdsource es achicar la barrera de conocimiento e información entre los países más y menos desarrollados, y lograr así que todos los productos de Google funcionen de la misma forma estés donde estés, ya sea en un pequeño pueblo de Argentina, en una ciudad de playa en Colombia o en Mountain View. La app es un éxito en algunos países de Asia, como en la India, donde las colaboraciones han crecido por miles. ¡Ayúdanos a hacer que eso mismo suceda en Latinoamérica!


En ocasiones, mantenerse al día con las noticias sobre tecnología puede ser un trabajo a tiempo completo, sin importar tu área de interés específico. Recopilamos esta lista de noticias útiles, interesantes y, sobre todo, geniales para que puedas ponerte al día con las novedades del gran mundo de Google. Esto es lo que nos llamó la atención.

En ocasiones, mantenerse al día con las noticias sobre tecnología puede ser un trabajo a tiempo completo, sin importar tu área de interés específico. Recopilamos esta lista de noticias útiles, interesantes y, sobre todo, geniales para que puedas ponerte al día con las novedades del gran mundo de Google. Esto es lo que nos llamó la atención.
Un periódico aprovecha la infraestructura de la nube y la inteligencia artificial
The New York Times creó una canalización de procesamiento utilizando productos de GCP para digitalizar y organizar sus más de cinco millones de fotos físicas. Utilizan Cloud Storage para guardar los escaneos de fotos, Cloud Pub/Sub a fin de proporcionar el flujo de datos, los servicios de Google Kubernetes Engine (GKE) para cambiar el tamaño de las imágenes y una base de datos Cloud SQL que les permite almacenar metadatos. Aquí está la historia completa.
Toma mejores fotos en teléfonos Pixel gracias al aprendizaje automático
Recientemente, también vimos cómo el teléfono Pixel 3 integró el aprendizaje automático para que, al momento de tomar fotos, el modo de retrato de la cámara pueda predecir mejor la profundidad de la imagen. El uso del aprendizaje automático permitió a los desarrolladores de Pixel considerar varias "claves de profundidad", lo que sería extremadamente difícil de lograr con un algoritmo creado manualmente. En su lugar, entrenaron una red neuronal escrita en TensorFlow para obtener la profundidad mejorada. Obtén todos los detalles técnicos aquí.
¿Quieres que tu teléfono tenga mejor recepción? Hay una red que te puede ayudar con eso
¿Alguna vez has deseado que tu teléfono encuentre otra opción mejor cuando no tienes señal estable? Existe un servicio de red móvil virtual de Google que cambia automáticamente tu conexión entre puntos de acceso Wi-Fi y redes móviles según la intensidad de la señal y la velocidad de donde estés. En noviembre, se informó que Google Fi pasó a estar disponible para la mayoría de los dispositivos Android y iPhone.
Descubre el concepto "malla de servicio"
Si has empezado a experimentar con Istio, o quieres probarlo, este artículo de Medium explica a la perfección cómo crear una app del tipo "Hello, world" compatible con Istio. Principalmente, se enfoca en el enrutamiento, ya que Istio administra el tráfico de tu app y asume que tienes conocimiento básico sobre contenedores y Kubernetes.
¿Quieres divertirte a lo techie en tu tiempo libre?
Ahora es más fácil inscribirte en algunas de las tres competencias de programación de Google: Hash Code, Code Jam y Start. Todas son internacionales, y el sitio tiene una interfaz simplificada. ¿Aceptas el desafío? Regístrese para recibir notificaciones sobre las primeras fechas de inicio de 2019.
¿Quieres agregar algo a la lista? Dinos qué nos recomendarías.






Publicado por Alberto Medina, desarrollador de AMP y WordPress (Google)
Habilitar una experiencia de AMP de primera clase en WordPress es una de las formas en que esta tecnología pretende brindar una experiencia del usuario primordial a los sitios y al contenido de la Web. Se ha trabajado mucho durante el último año para mejorar la calidad del complemento oficial de AMP y ...





Publicado por Alberto Medina, desarrollador de AMP y WordPress (Google)
Habilitar una experiencia de AMP de primera clase en WordPress es una de las formas en que esta tecnología pretende brindar una experiencia del usuario primordial a los sitios y al contenido de la Web. Se ha trabajado mucho durante el último año para mejorar la calidad del complemento oficial de AMP y hoy lanzamos la versión estable 1.0 del complemento oficial de AMP para WordPress.

La versión 1.0 del complemento integra la creación de contenido de AMP a la perfección con flujos de trabajo estándar de WordPress, tanto en la edición clásica como en la basada en Gutenberg. En particular, en esta versión se admite una experiencia de AMP nativa, lo que permite que los sitios de WordPress se construyan completamente con AMP, sin una versión duplicada de una página en "modo sincronizado".
Las funciones y capacidades de la versión 1.0 incluyen las siguientes:
  • Depuradores de contenido: Ayuda a sustituir las etiquetas HTML por sus componentes de AMP correspondientes, implementa optimizaciones y envía información de validación a la herramienta de compatibilidad del complemento (ver más abajo).
  • Herramienta de compatibilidad: Ayuda al desarrollo de las experiencias de AMP al permitir la depuración basada en la exposición de información extensa y detallada sobre los errores de validación que pueden existir, el lenguaje de marcado o las secuencia de comandos que los causan, y los componentes específicos del sitio (por ejemplo, tema, complemento o núcleo), asumiendo la responsabilidad del contenido de esa página.
  • Eliminación de código CSS obsoleto: Ayuda a ordenar el código CSS propio en los casos en que las reglas existentes de este lenguaje excedan el límite máximo permitido en páginas AMP individuales.
  • Compatibilidad con el tema central: Habilita la validez completa de AMP para cuatro temas predeterminados (es decir,  2015, 2016, 2017 y 2019).
  • Integración de Gutenberg: Permite la creación de contenido AMP totalmente integrado con Gutenberg, la nueva y poderosa experiencia de edición en WordPress.
  • Soporte de experiencias nativas de AMP: Permite experiencias de AMP de sitio completo sin sacrificar por un bit la flexibilidad de la plataforma o la fidelidad del contenido.
  • Una gran cantidad de mejoras en el código, el rendimiento y la experiencia del desarrollador: Desde la flexibilidad de personalización hasta los mejores flujos de IU, la internacionalización, la accesibilidad, etc. Consulta la lista completa en la publicación de la versión.
  • Compatibilidad con las opciones para inhabilitar o inhabilitar:  Toda la funcionalidad está disponible para habilitar. Y los usuarios que tienen esta opción pueden hacerlo solo en secciones específicas de su sitio, así como inhabilitar AMP a nivel detallados (p. ej., en una sola publicación).
  • Aplicación de compatibilidad: Garantiza que un sitio sea compatible con AMP y que solo publique contenido válido para esta funcionalidad.
Te invitamos a probar el nuevo lanzamiento mediante estos pasos:
  1. Sube el complemento al directorio /wp-content/plugins/ de tu sitio.
  2. Activa el complemento en el menú "Complementos" de WordPress.
  3. Si usas versiones anteriores del complemento en el modo Clásico, migra al modo Sincronización o Nativo.
  4. Obtén más información sobre las funciones mencionadas anteriormente en el sitio de Complemento.

Lo que viene

El complemento oficial de AMP para WordPress proporciona herramientas y funciones esenciales que permiten crear contenido de AMP a la manera de WordPress. Es importante tener en cuenta que el complemento no es una solución de llave en mano para "AMPlificar tu sitio", sino que funciona como una tecnología clave que habilita un ecosistema de WordPress totalmente compatible con AMP.
El camino por seguir está relacionado con la adopción del ecosistema. A medida que avancemos, habrá más complementos y temas compatibles al 100% con AMP, y los propietarios de los sitios encontrarán fácilmente componentes compatibles con esta tecnología que les permitan ensamblar sitios completos seleccionando elementos de la página temas/complementos de WordPress.org.
En el futuro, esperamos que haya soluciones de llave en mano que los propietarios de sitios puedan aprovechar para proporcionar fácilmente experiencias increíbles de AMP, independientemente de su nivel de experiencia. Nuestro objetivo final es que el contenido de AMP de alta calidad en los sitios de WordPress sea omnipresente.
Únete a nosotros mientras seguimos viaje y comparte tus comentarios sobre la versión más reciente. Nos entusiasma el potencial que tiene el complemento de mejorar la experiencia del usuario en la Web y esperamos con ansias lo que está por venir.



Publicado por Jocelyn Becker, gerenta sénior de Programas (Capacitación para Desarrolladores de Google)
El equipo de Capacitación para Desarrolladores de Google publicó recientemente una versión actualizada de nuestro curso "Fundamentos para desarrolladores de Android" como una serie de codelabs de Google.


Publicado por Jocelyn Becker, gerenta sénior de Programas (Capacitación para Desarrolladores de Google)
El equipo de Capacitación para Desarrolladores de Google publicó recientemente una versión actualizada de nuestro curso "Fundamentos para desarrolladores de Android" como una serie de codelabs de Google.

Página de destino del curso "Fundamentos para desarrolladores de Android"
Los codelabs debutaron como instructivos en Google I/O 2015, y se han popularizado como una forma en la que los desarrolladores pueden aprender a usar las herramientas tecnológicas, API y SDK de Google. Un codelab es un instructivo breve y autónomo que guía al usuario para realizar una tarea específica. En 2018, más de 2 millones de personas aprovecharon los codelabs de Google.
Nuestros cursos de Android fueron pensados como capacitaciones presenciales. Sin embargo, descubrimos que muchas personas los realizaban por su cuenta, fuera de los programas de enseñanza formales. Entonces, cuando actualizamos el curso "Fundamentos para desarrolladores de Android", además de respaldar el aprendizaje áulico, pusimos el material a disposición como una serie secuencial de codelabs.

Curso "Fundamentos para desarrolladores de Android"

El curso actualizado "Fundamentos para desarrolladores de Android" (V2) incluye lecciones sobre el uso de la base de datos Room y otros componentes de arquitectura. Se actualizaron todas las apps para reflejar que la plantilla "Empty Activity" de Android Studio use ConstraintLayout, y hemos actualizado todas las apps a una versión posterior de Android Studio. Para obtener más información sobre las diferencias, consulta las notas de la versión.

Curso "Android avanzado"

También hemos actualizado el curso "Android avanzado para desarrolladores" como una serie de codelabs. Este curso ofrece instrucciones detalladas para aprender sobre temas más avanzados y agregar funciones a tus apps que permitan mejorar la participación y satisfacción de los usuarios. Descubre cómo agregar mapas a tus apps, crear vistas personalizadas, usar SurfaceView para dibujar directamente en la pantalla y mucho más.
Capturas de pantallas de apps que muestran un marcador de mapa, un controlador personalizado y un Android que se oculta en la oscuridad

Material de enseñanza para ambos cursos

Logotipo de Android con un gorro de graduación
Si quieres impartir cualquiera de los cursos por tu cuenta, o bien utilizarlos como base para estudiar, aún está disponible el paquete completo, que incluye presentaciones de diapositivas, código fuente en GitHub y guías de conceptos, además de codelabs con información detallada.