slide1

Alt1040. Noticias acerca de Internet, diseño, música, cine, opiniones, weblogs y medios

Es uno de los weblogs de tecnología más seguidos de la blogosfera hispana.

slide2

Bitelia. Blog de software, internet y servicios web

Software y aplicaciones para mejorar tu vida, guías de uso, trucos, listas, noticias y todo sobre tecnología.

slide3

Xataka. Publicación de noticias sobre gadgets y tecnología.

Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc.

slide4

Wwwhatsnew. Aplicaciones, marketing y noticias en la web.

Servicios que os pueden ser útiles para dibujar, gestionar tareas, hacer amigos, encontrar restaurantes...

slide5

Fayerwayer. Discusiones y opiniones de lo ultimo en tecnología y gadgets

Con secciones dedicadas a Internet, Software o Redes Sociales es un referente a nivel de tecnología en español.

Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

16 de julio de 2022

Fundamentos de la Inteligencia Artificial

AI
En esencia, la Inteligencia Artificial (en adelante AI por sus siglas en inglés "Artificial Intelligence") es programación informática que aprende y se adapta. O dicho de otro modo, es el nombre que se le da a cualquier sistema informático al que se le enseña a imitar comportamientos humanos inteligentes.


Se refiere a cualquier cosa, desde programas que enseñan cómo jugar juegos de mesa y traducir idiomas, hasta sistemas complejos que pueden tener conversaciones que parecen humanas, analizar el mercado de valores o ayudar a diagnosticar problemas de salud.

La última década ha visto un gran progreso, provocado por el aumento de la velocidad de las computadoras y la introducción de técnicas como el aprendizaje automático. Como resultado, la AI ahora se está integrando cada vez más en la forma en que vivimos, trabajamos y damos sentido al mundo.

En última instancia, el futuro de estas tecnologías dependerá en gran medida de lo que las personas decidan hacer con ellas, pero la promesa que tienen de transformar los desafíos humanos es cada vez más clara.

Parcialidad


Los datos incompletos pueden generar sesgos en la AI.

Los resultados de los sistemas de AI pueden verse afectados por datos que amplifican los sesgos existentes que se encuentran en el mundo real.

Por lo general, la AI crea un sesgo cuando los datos que se le ofrecen para aprender no son completos y, por lo tanto, conducen hacia ciertos resultados. Debido a que los datos son el único medio de aprendizaje de un sistema de AI, podría terminar reproduciendo cualquier desequilibrio o sesgo que se encuentre en la información original.


Shoes

Por ejemplo, si estuviera enseñando a la AI a reconocer zapatos y solo le mostrara imágenes de zapatillas deportivas, no aprendería a reconocer tacones altos, sandalias o botas como zapatos.

El sesgo hace que sea un desafío desarrollar una AI que funcione para todos.

Ningún sistema de AI es lo suficientemente complejo, ni un conjunto de datos lo suficientemente profundo, para representar y comprender a la humanidad en toda su diversidad. Esto puede presentar profundos desafíos si se considera el potencial que tiene la AI para influir en las experiencias de personas reales.

Una AI que preselecciona candidatos para entrevistas para cubrir el puesto de CEO podría aprender a favorecer a los hombres, simplemente porque se le dieron currículums exitosos de los que aprender, e históricamente había un sesgo social hacia los candidatos masculinos.

Para garantizar que los sistemas de AI sean éticos y reduzcan el riesgo de sesgo, los programadores diseñan sus sistemas y conservan sus datos con atención. Esta es la única manera de garantizar que los sistemas funcionen bien para todos.

Conjunto de Datos


Los conjuntos de datos son grandes colecciones de información digital que se utilizan para entrenar la AI.

Pueden contener cualquier cosa, desde datos meteorológicos como la presión del aire y la temperatura, hasta fotos, música o, de hecho, cualquier otro dato que ayude a un sistema de AI con la tarea que se le ha asignado.

Los conjuntos de datos son como libros de texto para computadoras.

Así como un niño aprende a través de ejemplos, lo mismo ocurre con las máquinas. Los conjuntos de datos son la base de este proceso de aprendizaje.

Los equipos de diseño de AI tienen que considerar cuidadosamente los datos con los que eligen entrenar su AI, y pueden construir parámetros que ayuden al sistema a dar sentido a la información que se le proporciona.

Debido a su escala y complejidad, estas colecciones pueden ser muy difíciles de construir y refinar, como por ejemplo las muestras de audio o mapas extensos que cubran todo el sistema solar conocido.

Por esta razón, los equipos de diseño de AI frecuentemente comparten conjuntos de datos en beneficio de la comunidad científica, lo que facilita la colaboración e incentiva la investigación.

Aprendizaje automático (Machine Learning)


El aprendizaje automático permite que los sistemas de AI presenten sus propias soluciones, en lugar de estar preprogramados con un conjunto de respuestas: la AI aprende por sí misma a través de los datos y la experiencia.

En la programación tradicional, si quisieras enseñarle a una computadora a dibujar un gato, tendrías que explicar el proceso de dibujo con detalles precisos. Con el aprendizaje automático, alimenta un sistema de AI con miles de bocetos de gatos para analizar y dejar que busque patrones por sí mismo.

Con el tiempo, comienza a reconocer las características que componen a un gato, como las orejas puntiagudas y los bigotes, y desarrolla una comprensión más flexible y matizada de lo que constituye un boceto de gato.

Cat


Con estas capacidades de detección de patrones, el aprendizaje automático ayuda a los sistemas de inteligencia artificial a dar sentido a grandes cantidades de datos.

El aprendizaje automático puede completar ciertas tareas a gran velocidad y escala: los conservacionistas lo usan para analizar meses de grabaciones submarinas y señalar patrones de migración de ballenas, mientras que los médicos lo usan para examinar multitud de escaneos a la vez para identificar los primeros signos de una enfermedad.

Test de Turing


Se trata de un famoso test que planteó la pregunta: ¿Pueden pensar las máquinas?

El test de Turing tiene una premisa simple: "si un ser humano puede tener una conversación de cinco minutos sin darse cuenta de que está hablando con una máquina, la computadora pasa la prueba".

Inventada en 1950 por el científico informático Alan Turing, la prueba sentó las bases de lo que ahora llamamos AI, al preguntarse si era posible que una máquina imitara el pensamiento humano.

Curiosamente, muchos de los sistemas exitosos hasta la fecha podrían convencer a alguien de que estaban hablando con una persona, no como una conversación humana convincente, sino con errores ortográficos o gramaticales. Las habilidades requeridas para parecer humano y pasar la prueba no están necesariamente vinculadas con la 'inteligencia' y el 'pensamiento'.

Sin embargo, el test de Turing llevó a muchos científicos e ingenieros a considerar lo que nos hace inherentemente humanos e inspiró a los equipos de diseño de AI a luchar por sistemas informáticos que interactúen de formas más naturales y similares a las humanas.






31 de enero de 2022

Los papeles de Pandora, Python y el aprendizaje automático

Python Icon
A finales del año 2021 vieron la luz los papeles de Pandora, estos son un conjunto de aproximadamente 12 millones de documentos filtrados (unos 3 TeraBytes), que formaban parte de una investigación periodística. Provienen de una filtración de documentos confidenciales de 14 despachos de abogados especializados en la creación de sociedades en varios paraísos fiscales, entre ellos, Panamá, Islas Vírgenes Británicas o Bahamas.


A través de esta información se han puesto al descubierto las fortunas secretas de líderes mundiales, grandes empresarios, funcionarios públicos, y en general, multitud de evasores que se mantenían al margen de la ley.

Entre algunos personajes populares, destacan el presidente de Chile, el ex-director del FMI, el rey de Jordania, el primer ministro checo, o Tony Blair, o incluso estrellas del mundo del espectáculo como Julio Iglesias, Shakira, Claudia Schiffer o Pep Guardiola.

Todos estos datos vienen a exponer diversos sistemas que se usaban para evitar los controles fiscales sobre dichas fortunas, siendo la base para multitud de acusaciones de corrupción, lavado de dinero o evasión fiscal.

Los documentos incluyen datos de más de 5 décadas, aunque la mayoría se refieren a los últimos 20 años, e incluyen información sobre 30.000 beneficiarios.

Además de su gran volumen, eran de diversa procedencia, idioma y formato, documentos escritos a mano, hojas de cálculo, correos electrónicos, imágenes, ficheros PDF de más de 10.000 páginas, pasaportes, extractos bancarios, declaraciones de impuestos, contratos, ... Lo cual le añade complejidad a la hora de analizarlos y poder extraer conclusiones de los mismos.

El reto estaba en poder obtener resultados y sacar a la luz los secretos en un tiempo razonable. Y en eso Python y las últimas técnicas de aprendizaje automático tuvieron un papel crucial.


Machine Learning


Tan solo una pequeña fracción de dichos documentos, el 4%, estaban estructurados, es decir, contenían los datos organizados en tablas. Esos fueron los más simples de analizar, se organizaron por empresa, se eliminaron duplicados y se combinaron en un documento maestro, de esta manera todos los datos estaban juntos y su interpretación fue mucho más directa.

En otros archivos, como documentos escritos, archivos en formato PDF, ... se usó Python para automatizar la extracción y su posterior estructuración dentro de lo posible.

Pero para el resto de documentos, los casos más complejos, se usaron técnicas de Machine Learning o aprendizaje automático, a través de la librería Scikit-Learn de Python.

De esta manera, se identificaron, separaron y clasificaron formularios concretos de documentos mayores. Incluso muchos de estos formularios estaban escritos a mano, y se tuvieron que emplear técnicas de reconocimiento de escritura manual.

Cuando todos esos datos finalmente se pudieron estructurar, se generaron unas listas que vinculaban a los beneficiarios con las empresas, y posteriormente se usaron librerías de visualización de datos para crear modelos visuales e incluso poder realizar búsquedas sobre dichos datos.
De esta manera, los investigadores obtuvieron una herramienta que les permitía rastrear las conexiones entre personas y empresas a través de la maraña de documentos, y descubrir a los evasores.

En la Universidad Internacional de Valencia y de manera específica en el Curso Experto de Programación Python se estudia dicho lenguaje y las técnicas más populares de inteligencia artificial, como el aprendizaje automático, redes neuronales, ciencia de datos, automatización, ... Todas ellas disciplinas clave en la resolución del caso de los papeles de Pandora.


* Artículo de Iván Fuertes Torrecilla *


Iván Fuertes Torrecilla


Senior Render Engine & SDK Programmer for Augmented Reality at Wikitude




15 de junio de 2021

Sistemas embebidos: ejemplos de uso en el género humano

Chip Computer CPU Hardware Icon
Los sistemas embebidos, como siempre decimos en Tribalyte Technologies, por mucho que no nos demos cuenta, son parte de nuestras vidas. De hecho, sin ellos, hoy no tendríamos muchas de las comodidades que la tecnología nos ha brindado a lo largo de los últimos sesenta años.

¿Qué es un sistema embebido?


Para quien todavía no conozca el mundo del “embebido”, de forma muy resumida, podríamos decir que un sistema embebido, también conocido como "empotrado" o "incrustado", es un tipo de sistema electrónico que, contando con un microcontrolador o microprocesador - su "cerebro" - suele encontrarse dentro de dispositivos y productos que, a través de un software (comúnmente desarrollado en C/C++ y Linux) pueden llevar a cabo funciones específicas. Un ejemplo clásico de sistema embebido es el dispositivo de una lavadora moderna. Para hacer nuestra colada es preciso seleccionar nuestro programa de lavado, es decir, pulsar unos botones que, a su vez, contando con un software, permitirán que el “sistema” arranque y que las funcionalidades elegidas se lleven a cabo perfectamente. Esto, muy en resumen y grosso modo, es lo que normalmente ocurre en todo tipo de dispositivo que contenga un sistema embebido.

Security Smartphone

¿Qué impacto han tenido los sistemas embebidos en el género humano?


Tal y como decíamos antes, los seres humanos y los sistemas empotrados llevan más de 60 años de “relación” y los últimos avances en I+D nos han dejado claro que esta alianza simbiótica de máquina/hombre va a reforzarse aún más. Y no solo en nuestro planeta, sino también en todo el espacio.
Sí, exacto, en el espacio. De hecho, no es nada casual que el primer sistema embebido realizado en la historia fuera un sistema de guía desarrollado por el MIT (Massachusetts Institute of Technology) para la NASA y que desempeñó un papel fundamental en las misiones del Apolo hacia la luna. Hoy en día, la astronáutica sigue siendo uno de los sectores que más invierte en la investigación y evolución de los sistemas embebidos. Un caso muy conocido sería, por ejemplo, el de SpaceX, la empresa estadounidense fundada por Elon Musk y que, contando con una increíble inversión en el desarrollo de software embebido, todo apunta a que va a lanzar el primer Sistema de Transporte Interplanetario (STI) para transportar al ser humano a Marte.

Pero, dejando a un lado estos casos extremos, lo que sí cabe destacar es que, a partir de los años 70, el uso de los sistemas embebidos empezó a ganar terreno en todo tipo de industria y sector (desafortunadamente, también para la realización de armamento bélico y armas tecnológicas), hasta colarse en nuestro día a día: medios de transporte, aparatos electrodomésticos, seguridad, automoción industrial, sector automovilístico, ferroviario... incluso dentro del cuerpo humano.

Sistemas embebidos y usos en el cuerpo humano


La ciencia ficción nos ha acostumbrado a pensar en el “hombre biónico” como algo amenazante, siniestro y malvado. De hecho, al escuchar "hombre biónico" u "hombre-máquina", ¿a quién no se le ocurre enseguida alguna escena de "Terminator" disparando contra todo ser vivo? También es cierto que, en el imaginario colectivo, hay ejemplos "más positivos" y pacíficos como pueden ser "RoboCop" o "El hombre Bicentenario". Pero, aparte de la ciencia ficción y de todas las referencias culturales o lugares comunes que podamos tener en nuestra sociedad, y, sobre todo, sin enfocarnos solo en el sector propio de la robótica, los progresos que la tecnología ha realizado en la aplicación de los sistemas embebidos para mejorar y potenciar la condición humana es algo evidente y, más bien, tangible.

A este respecto, hay una serie muy interesante en Netflix que habla sobre los mecanismos que mueven "nuestra máquina", nuestro organismo y que recomiendo a todo aquel que quiera profundizar en ello: Dentro del cuerpo humano.

Sistemas embebidos en la ingeniería biomédica


En el primer capítulo de esta misma serie (espero no destripar demasiado), se cuenta la historia de Jason Little, un hombre americano que perdió su brazo izquierdo tras un grave accidente y que, gracias a un increíble estudio conducido por la Profesora Ranu Jung (del departamento de Ingeniería Biomédica de la Florida International University), a través de una prótesis tecnológica, ha podido recuperar no solo las funciones mecánicas de su miembro fantasma, sino hasta las sensaciones táctiles y neuronales. Es decir, en este caso concreto, no se habla solo de una prótesis estéticamente impecable que cumple con operaciones básicas, sino de un sistema tecnológico extremadamente avanzado que supera las "barreras" del cuerpo humano y que, gracias a una serie de estimuladores de neuronas insertados directamente en el cuerpo de Jason, le permite poner en comunicación directa su cerebro con su brazo biónico.

Pero ¿qué tiene que ver todo esto con los sistemas embebidos? Pues, un pequeño detalle: el sistema en cuestión cuenta, entre otros elementos, con un Raspberry Pi 3 que es un Single-Board Computer, es decir, un ordenador completo en una sola placa (chip) y que, junto con Arduino, representa uno de los entornos de desarrollo más importantes para software y sistemas embebidos.



Otro ejemplo de integración de sistemas embebidos directamente en el cuerpo humano, sería el uso de un desfibrilador cardioversor implantable (ICD) para detectar y regular los latidos irregulares del corazón. Se trata de un dispositivo médico subcutáneo, un microprocesador que, gracias a la emisión de pequeños impulsos eléctricos, puede intervenir en el caso de que detecte alguna taquicardia ventricular peligrosa. En el campo de la electromedicina existen ya muchísimos ejemplos de equipos sanitarios que controlan, cuidan y potencian nuestra salud aprovechando la infinidad de posibilidades que los sistemas embebidos pueden proporcionarle al género humano.

Es decir, el objetivo principal de la tecnología, desde el amanecer de nuestra especie, siempre ha sido el de mejorar nuestra vida y optimizar nuestras labores. De los primeros utensilios rudimentarios del periodo neolítico, pasando por la máquina de vapor de James Watt y llegando hasta la era de la Industria 4.0.

De la industria 4.0 a la Computación Cognitiva


De hecho, cuando se habla de Industria 4.0, o sea, de la transformación digital de los procesos industriales y de producción para prácticamente cualquier tipo de sector, es imposible prescindir del papel fundamental que los sistemas embebidos han desempeñado y que, según lo previsto, se implantarán aún más a medida que nos acercamos a la quinta revolución industrial. Con el término "Industria 5.0" nos referimos a la interconexión entre hombres y máquinas gracias al uso de las tecnologías más avanzadas como la Inteligencia Artificial, el IoT (Internet of Things) y, sobre todo, el potencial inmenso de la computación cognitiva.

La computación cognitiva, también conocida como "cómputo cognitivo", en pocas palabras, consiste en el reto de reproducir e imitar el funcionamiento del cerebro humano dentro de sistemas informáticos automatizados que hacen uso de una serie interminable de datos. Y no es casualidad que hoy en día solamos referirnos a los datos como "el oro del siglo XXI". Además, dentro de este marco, desde luego, caben todos aquellos aspectos que ya se usan, por ejemplo, en el marketing digital (machine learning, deep learning, Big Data, chatbots, etc.) pero que, ahora, tienen como objetivo final no la mejora o la automatización del trabajo humano sino su completa sustitución por medio de las máquinas.

Todo tipo de maquinaria - mejor dicho la gran mayoría - ya de por sí cuenta con sistemas embebidos que, gracias al desarrollo de software específicos, permiten la automatización de los procesos industriales. La industria automovilística, aeroespacial, ferroviaria, naval, alimenticia, agrícola y un largo etcétera, hoy en día probablemente no existirían sin el uso de sistemas embebidos, PLCs, RTOS, etc.

Pero la pregunta, ahora, es distinta: ya que las máquinas dotadas de computación cognitiva prácticamente no pueden cometer errores, ¿deberíamos encomendar todo tipo de decisión u operación directamente a ellas? Si, pongamos un ejemplo, en el campo médico, un día (y en el mercado ya existe algo por el estilo) pudiéramos contar con la diagnosis hecha enteramente por uno de estos sistemas o, es más, para una cirugía, en lugar de un cirujano, en el quirófano nos encontráramos solo frente a una máquina programada para operarnos sin jamás cometer algún fallo, ¿tú qué harías?

Desarrollo de software para sistemas embebidos


Sobre este tema ya se han abiertos muchos debates y, pese a que ciencia y ética, por su naturaleza, es muy improbable que compartan la misma opinión, el entusiasmo hacia el progreso tecnológico es imposible de mantener a raya a estas alturas. Y, por mucho que la tecnología avance y que se desaten debates de bioética o bioingeniería, el papel fundamental de los sistemas embebidos en nuestra sociedad solo puede que aumente y perdure.

En Tribalyte Technologies, como expertos en el desarrollo de software embebido para diferentes sectores, nos gusta pensar en la tecnología como una herramienta preciosa para crear una sociedad equilibrada y basada en la razón. Una sociedad que hace uso del progreso para conseguir la máxima sostenibilidad, eficacia y confort. Todo lo demás, ya nos lo dirá el futuro de nuestra sociedad.



* Artículo de Alessandro Barbera Formica *



Alessandro Barbera


CMO | Ejecutivo de cuentas



BIO

Soy experto en marketing y comunicación multilingüe (It-Es-En).
La formación en startup y luego la experiencia en empresas internacionales, me han permitido desarrollar un perfil T-shaped en el mundo digital y competencias multidisciplinares en el marketing estratégico y publicitario.



7 de octubre de 2020

¿Qué es Docker? breve introducción y conceptos básicos

Logo Docker
Docker ha sido una propuesta diseñada y desarrollada inicialmente por Salomón Hykes en la empresa "dotCloud" con el propósito de automatizar los procesos de integración continua (CI) y entrega continua (CD). A raíz de su potencia y facilidad de uso, fue liberado como proyecto de código abierto en el año 2013.


Desde su liberación en 2013, el proyecto ha ido creciendo y se ha consolidado como uno de los más importantes en GitHub con el mayor número de estrellas y de forks.

Empresas como Microsoft, IBM, RedHat, HP, entre otras, no tardaron en ver la potencia y valor de Docker y por ello, participan activamente en su desarrollo y crean soluciones propias partiendo de Docker.

DevOps


¿qué es Docker?


Es un proyecto open source utilizado principalmente para el despliegue de aplicaciones en espacios virtualizados. Estos espacios son también conocidos como contenedores.

Es una tecnología muy extendida en la industria del desarrollo de software, siendo una práctica muy frecuente en los equipos de desarrollo. Estos usan Docker para poder desplegar fácil y rápidamente las aplicaciones que crean.

¿qué es un contendor?


Es un espacio virtual (hay diferencias importantes con las máquinas virtuales) en dónde instalamos todo el software necesario para que podamos ejecutar las aplicaciones que vamos desarrollando.

Podemos tener un contenedor con una configuración muy específica. Por ejemplo, podríamos crear un contenedor que incluya Apache, PHP y MySQL con versiones muy concretas y lo podemos desplegar facilmente en otros sistemas en los que necesitemos que se encuentre en ejecución esta aplicación (estas plataformas sólo necesitan correr un servicio de Docker).

El objetivo de los contenedores es incluir todo lo necesario para que una aplicación se pueda ejecutar en cualquier plataforma sin tener que cambiar nada.

¿qué es una imagen?


Un contenedor sólo es posible crearlo a partir de una imagen.
Una imagen, a grandes rasgos, es una plantilla que nos permite crear contenedores. Incluye el diseño y la configuración necesaria para poder crear contenedores concretos.

De forma general, una imagen define el software que vamos a instalar en el contenedor y que versiones tienen que tener. Es decir, las imágenes siguen un modelo y sintaxis estándar.

A modo de ejemplo, podríamos hacer un símil en el mundo del desarrollo diciendo que "una imagen sería una clase y un contenedor el objeto propiamente dicho".

Estos dos elementos son imprescindibles para poder utilizar Docker.

Caraceterísticas importantes de Docker


  • las imágenes y los contenedores se gestionan de una forma centralizada por medio de un servicio que se encuentra en ejecución en el sistema operativo. Este servicio es conocido como "dockerd".

    En sistemas basados en linux (en las distribuciones más recientes) este servicio se encuentra gestionado, como muchos otros, por systemd.

    Lo que normalmente hacemos es utilizar el cliente de Docker (comando docker) para poder conectarnos con este servicio y poder gestionar imágenes y contenedores.

    Este comando se encarga de conectarse al servicio de docker y realizar todas las operaciones de administración sobre este servicio como son la gestión de imágenes y contenedores, configuraciones de red, etc.

  • existen multitud de imágenes que tienen configuraciones estándar.

    Es bastante habitual encontrarnos con equipos de desarrollo que van a necesitar el mismo stack tecnológico (Apache, PHP, MySQL por ejemplo). Para ello existe un repositorio centralizado conocido como Docker Hub (https://hub.docker.com/) en donde se encuentran cientos de imágenes registradas que podemos descargar y posteriormente utilizar para crear nuestros contenedores partiendo de esas imágenes.

  • los contenedores admiten múltiples configuraciones, incluyendo la asignación de contenedores a distintos segmentos de red. Esto nos permite, entre otras cosas, crear contenedores que se van a ver entre ellos partiendo de un contexto de red común.

  • en docker también podemos crear clusters de contenedores, crear volúmenes y otras muchas funcionalidades que facilitan la actividad de un DevOps.

Diferencias Contenedores vs Máquinas Virtuales


Las máquinas virtuales han sido la forma estándar y tradicional de desplegar múltiples aplicaciones con diferentes infraestructuras en una misma máquina o sistema.

Las máquinas virtuales se basan en un Hypervisor que es un software que permite la instalación de otros sistemas operativos (invitados) sobre el sistema anfitrión.

Las máquinas virtuales tienen una desventaja importante, cada sistema invitado es completamente independiente del sistema anfitrión, tiene su propia gestión de recursos, procesos, tareas, etc. Esto dificulta la gestión de las aplicaciones que instalamos en estos sistemas invitados.

En cambio docker, lo que propone es no instalar un sistema operativo invitado sino aprovechar las características que ya se encuentran disponibles en el sistema anfitrión. Esto es posible gracias al uso de un motor de Docker (Docker Engine).

Docker Engine es un servicio como cualquier otro que se encuentra en el sistema operativo anfitrión pero tiene la ventaja de que se pueden desplegar sobre este servicio diferentes contenedores y cada uno de estos contenedores va a ser completamente independiente de los otros, compartiendo la misma base (librerías, aplicaciones, etc) del sistema operativo.

Es mucho más liviano trabajar con imágenes y contenedores que trabajar con un sistema operativo completo, que es lo que hacemos con las máquinas virtuales con un hypervisor como por ejemplo VirtualBox o VMWare.




21 de noviembre de 2019

El lenguaje Go cumple 10 años

Golang
El pasado 10 de noviembre tuvo lugar el décimo aniversario de Go, un hito celebrado por la comunidad global de desarrolladores de este lenguaje de programación con conferencias como Gopherpalooza en Mountain View y KubeCon en San Diego, además de docenas de reuniones en todo el mundo.


Go, también conocido como Golang, es un proyecto de código abierto que combina la velocidad de desarrollo de un lenguaje interpretado como Python, con la eficiencia y seguridad de un lenguaje compilado como C o C++.

Fué creado en Google el mes de noviembre de 2009 por Rob Pike, Robert Griesemer y Ken Thompson, co-creador con Dennis Ritchie de Unix y del lenguaje de programación C.

Lo más destacado es que Go fué diseñado ex profeso para mejorar la productividad de máquinas con más de un núcleo, en red y enormes bases de código, lo que permite a los programadores escalar rápidamente tanto el desarrollo como la implementación de software.

A medida que el uso de Go ha ido creciendo (tiene más de un millón de usuarios en todo el mundo), se han construido más y más servicios básicos con él. Las aplicaciones populares de código abierto creadas en Go incluyen Docker, Hugo, Kubernetes. La plataforma de nube híbrida de Google, Anthos, también está construida con Go.





Hay más de un millón de desarrolladores que usan Go en todo el mundo, englobando la banca y el comercio electrónico, los juegos y los medios de comunicación, la tecnología y otras industrias, en empresas tan diversas como American Express, Capital One, Dropbox, IBM, Monzo, New York Times, Salesforce, Square, Target, Twitch, Uber y, por supuesto, Google.

Un claro ejemplo es la empresa argentina dedicada a compras digitales Mercadolibre que usa Go para escalar y modernizar su ecosistema de comercio electrónico, mejorar la rentabilidad y los tiempos de respuesta del sistema.

El equipo de desarrollo de MercadoLibre crea y mantiene sus APIs, compatibles con la mayor parte de proveedores en la nube, en base a soluciones de microservicios. Históricamente, la arquitectura de desarrollo de software de la compañía tenía como pilar Grails y Groovy respaldado por bases de datos relacionales. Sin embargo, este gran marco con múltiples capas pronto se encontró con problemas de escalabilidad.

La conversión de esa arquitectura heredada a Go simplificó esas capas intermedias y produjo grandes beneficios de rendimiento. Por ejemplo, un servicio Go ahora puede ejecutar 70.000 solicitudes por máquina con solo 20 MB de RAM.

"Go fue maravilloso para nosotros", explica Eric Kohan, Gerente de Ingeniería de Software en MercadoLibre. "Es muy potente y fácil de aprender, y con la infraestructura de back-end ha sido excelente para nosotros en términos de escalabilidad".

El uso de Go permitió a MercadoLibre reducir el número de servidores que usan a un octavo del número original (de 32 servidores a cuatro), además cada servidor puede operar con menos potencia (originalmente cuatro núcleos de CPU, ahora hasta dos núcleos por procesador).

Con Go, los tiempos de compilación de MercadoLibre son tres veces más rápidos y su conjunto de pruebas se ejecuta 24 veces más rápido. Esto significa que los desarrolladores de la compañía pueden hacer un cambio, luego compilar y probar ese cambio mucho más rápido que antes.

Hoy, aproximadamente la mitad del tráfico de Mercadolibre es manejado por las aplicaciones Go.

Puedes leer más sobre el éxito de MercadoLibre con Go en el siguiente estudio: MercadoLibre crece con Go

Gracias al crecimiento de Go, se ha creado un nuevo centro para desarrolladores de Go: go.dev

Comienza a aprender:


31 de marzo de 2019

Llega Code Jam 2019, la competición de programación de Google

Codejam 2019
Code Jam es una iniciativa organizada por Google que reta a los programadores de todo el mundo a poner a prueba sus habilidades resolviendo múltiples rondas de problemas de algoritmia. Se permite el uso de cualquier lenguaje de programación y entorno de desarrollo para dar solución a estos problemas.


En esta temporada, se presentan problemas algorítmicos desafiantes (algunos de ellos son interactivos) para la comunidad global de programadores.

Cada año, el equipo de ingeniería de Code Jam y un grupo exclusivo de colaboradores de Google dedican miles de horas combinadas en la creación, prueba y publicación de algunos de los problemas algorítmicos más difíciles del mundo.

Este año se ha incorporado la característica de "formular una pregunta", que ofrece a los participantes la oportunidad de interactuar con los ingenieros de Code Jam durante las rondas en línea. También se están introduciendo nuevos conceptos, como la capacidad de probar una solución en sus servidores, así como proporcionar certificados a los competidores.

La ronda de clasificación se lleva a cabo el 5 de abril (regístrate aquí).
De las decenas de miles de participantes en el concurso, solo los 25 primeros calificarán para asistir el viernes 9 de agosto a la gran final en las oficinas de Google en San Francisco, Mountain View (California).

El nuevo Campeón del Mundo se llevará a casa $15,000, mientras que los 1.000 mejores competidores ganarán una camiseta de edición limitada de 2019.




Desafíos de la edición 2018 y ejemplos de resultados de uno de sus participantes

:

1- Rounding Error (5pts, 9pts, 11pts)


Enunciado del problema: Rounding Error, Problem

Respuesta » C++ (G++) code

#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

int solve(){
 int n, l;
 cin >> n >> l;

 int ans = 0;

 priority_queue pq;

 int left = n;
 rep(_,0,l){
  int c;
  cin >> c;
  left -= c;
  int res = 200 * c - n;
  while(res >= 0){
   res -= 2*n;
   ans++;
  }
  pq.push(res);
 }
 rep(i,0,left){
  int res = pq.top();
  pq.pop();
  if(res < -n){
   pq.push(-n);
   --i;
   continue;
  }
  res += 200;
  while(res >= 0){
   res -= 2*n;
   ++ans;
  }
  pq.push(res);
 }
 return ans;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": " << solve() << endl;
 }
}

2- Mysterious Road Signs (10pts, 20pts)


Enunciado del problema: Mysterious Road Signs, Problem

Respuesta » C++ (G++) code
#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

void solve(){
 int s;
 cin >> s;
 vi m(s), n(s);
 rep(i,0,s){
  int d, a, b;
  cin >> d >> a >> b;
  m[i] = d+a;
  n[i] = d-b;
 }
 
 map mm, nn;
 map mn;

 rep(i,0,s) mm[m[i]] = nn[n[i]] = mn[pii(m[i],n[i])] = 0;

 int ix = 0;
 trav(pa, mm) pa.second = ix++;
 ix = 0;
 trav(pa, nn) pa.second = ix++;
 ix = 0;
 trav(pa, mn) pa.second = ix++;
 
 vi mr(s), nr(s), mnr(s);
 rep(i,0,s){
  mr[i] = mm[m[i]];
  nr[i] = nn[n[i]];
  mnr[i] = mn[pii(m[i],n[i])];
 }

 vector ml(sz(mm)), nl(sz(nn)), mnl(sz(mn));
 rep(i,0,s){
  ml[mr[i]].push_back(i);
  nl[nr[i]].push_back(i);
  mnl[mnr[i]].push_back(i);
 }

 auto cnt = [&](int fr, int to, vi &v){
  return lower_bound(all(v), to) - lower_bound(all(v), fr);
 };

 auto good = [&](int fr, int to, int m1, int n1){
  int z = -1;
  if(mn.count(pii(m1, n1))) z = mn[pii(m1,n1)];
  int x = mm[m1], y = nn[n1];
  
  int res = cnt(fr,to, ml[x]) + cnt(fr,to, nl[y]);
  if(z >= 0) res -= cnt(fr,to, mnl[z]);

  return to-fr == res;
 };

 auto len = [&](int fr, int m1, int n1){
  int lo = 1, hi = s-fr+1;
  while(lo+1 < hi){
   int mi = (lo+hi)/2;
   if(good(fr, fr+mi, m1, n1)) lo = mi;
   else hi = mi;
  }
  return lo;
 };
 int rek = 0, num = 0;

 rep(i,0,s){
  int res = len(i, m[i], n[i]);
  if(i+res < s) {
   int j = i+res;
   res = max(res, max( len(i, m[i], n[j]),
       len(i, m[j], n[i]) ) );
  }
  if(res > rek){
   rek = res;
   num = 0;
  }
  if(res >= rek) ++num;
 }
 cout << rek << ' ' << num << endl;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": ";
  solve();
 }
}

3- Transmutation (15pts, 18pts, 12pts)


Enunciado del problema: Transmutation, Problem

Respuesta » C++ (G++) code
#include 
using namespace std;
#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define rrep(i,a,b) for(int i = (b); i --> (a);)
#define all(v) (v).begin(),(v).end()
#define trav(x,v) for(auto &x : v)
#define sz(v) int(v.size())
typedef vector vi;
typedef long long ll;
typedef pair pii;

ll solve(){
 int m;
 cin >> m;

 vi r1(m), r2(m);
 rep(i,0,m) cin >> r1[i] >> r2[i];
 trav(x, r1) --x;
 trav(x, r2) --x;

 vector g(m);
 trav(x, g) cin >> x;

 ll tot = 0;
 trav(x, g) tot += x;

 auto works = [&](ll y){
  vector gg = g;

  gg[0] -= y;

  rep(_,0,m-1){
   rep(i,0,m) if(gg[i]<0){
    if(gg[i] < -tot) return false;
    ll pr = gg[i];
    gg[i] = 0;
    gg[r1[i]] += pr;
    gg[r2[i]] += pr;
   }
  }
  trav(x, gg) if(x < 0) return false;
  return true;
 };

 ll lo = g[0], hi = tot+1;
 while(lo+1 < hi){
  ll mi = (lo+hi)/2;
  if(works(mi)) lo = mi;
  else hi = mi;
 }
 return lo;
}

int main(){
 int t;
 cin >> t;
 rep(i,1,t+1){
  cout << "Case #" << i << ": " << solve() << endl;
 }
}






17 de febrero de 2019

Stack Overflow e InfoJobs se asocian para ofrecer más oportunidades de trabajo

Stack Overflow Jobs
La formula de asociación funciona de la siguiente manera: los trabajos técnicos publicados en InfoJobs también se encontrarán en los trabajos de Stack Overflow Jobs siempre que cumplan con los estándares de calidad de trabajo de Stack Overflow.


El principal requisito de calidad es que las ofertas de empleo deben buscar profesionales cuya principal tarea sea solucionar un problema técnico mediante el desarrollo de software.

¿Cuáles son los motivos de este acuerdo?


Stack Overflow es la comunidad online de programadores más grande del mundo y en España cuenta con 900.000 visitantes cada mes.

En Stack Overflow cualquier persona que codifica puede encontrar soluciones a sus problemas técnicos.

Por otro lado, el Informe Anual del mercado laboral presenta los siguientes datos: en 2018 se publicaron en InfoJobs alrededor de 350.000 vacantes (un 10% más que el año anterior) en búsqueda de profesionales en el sector de la Informática y las Telecomunicaciones.

Y esta demanda seguirá creciendo en virtud de la encuesta realizada a más de 1.000 empresas en la que el 47% de las grandes corporaciones tiene previsto contratar perfiles tecnológicos en los próximos 24 meses.

Dominique Cerri, directora general de InfoJobs, explica que

"el principal beneficio de este acuerdo y que contribuye a un cambio de paradigma en la contratación de profesionales IT para nuestras empresas, es que Stack Overflow se alinea con nuestra ambición de que sean las ofertas las que encuentran al candidato y no el candidato el que debe buscar las ofertas. En este sentido, Stack Overflow sólo muestra las ofertas de empleo a los usuarios que encajan con el perfil solicitado".





Fuente de información: InfoJobs firma un acuerdo con Stack Overflow, la comunidad de programadores más grande del mundo

¿Qué tipo de perfiles profesionales se demandan?


Fundamentalmente:

  • Analistas, Business Intelligence o Data Scientist: roles para personas que escriban código personalizado, no personas que solo usan herramientas de desarrollo.
  • CTO (Chief Technical Officer): máximo responsable del departamento tecnológico, informático y técnico de una compañía.
  • Programadores, diseñadores o ingenieros de software.
  • Gerentes de producto: trabajan en conjunto con los desarrolladores para implementar nuevas características técnicas.
  • Probadores de software (QA o Test Developer).
  • Administradores de sistemas y DevOps (Development Operations).


Code Programmer


¿Cómo puedo optimizar las búsquedas de empleo?


La plataforma permite realizar búsquedas por preferencias de usuario:

  • Búsqueda por tecnología (Acceder)
  • Búsqueda por salario (Acceder).
  • Buscar trabajos más recientes (Acceder).
  • Buscar trabajo en empresas populares (Acceder)

Contratar a los desarrolladores es difícil


Programadores profesionales y aspirantes visitan Stack Overflow cada mes para ayudar a resolver problemas de codificación, desarrollar nuevas habilidades y encontrar oportunidades de trabajo.

Fundada en 2008, Stack Overflow se asocia con empresas para ayudarlas a comprender, comprometer, habilitar y contratar a desarrolladores de todo el mundo.








10 de enero de 2019

Aprende a programar javascript con Grasshopper, la app de Google para iOS y Android

Javascript Programming
Grasshopper (saltamontes en español) es una aplicación para dispositivos móviles diseñada para enseñar a codificar Javascript real.
Es una app gratuita, orientada a perfiles sin experiencia en programación, que cubre los conceptos básicos de programación.


Grasshopper es una de las últimas creaciones del taller para productos experimentales de Google, Área 120 que forma parte de Google Inc. Se trata de una incubadora dónde los trabajadores de Google lanzan docenas de ideas novedosas, que luego (las que prosperan) se abren al público en sus versiones beta. Grasshopper se lanzó en abril del pasado año.

El nombre Grasshopper rinde honor a Grace Hopper, uno de los primeros pioneros en la programación de computadoras.


Grasshopper App


1. ¿Qué conceptos básicos de JavaScript cubre?


Actualmente, Grasshopper enseña a utilizar el popular lenguaje de programación JavaScript, utilizado por más del 70% de los desarrolladores profesionales.

Grasshopper usa JavaScript para enseñar conceptos de programación fundamentales que son universales para casi todos los lenguajes de programación:

  • Los fundamentos: cómo funciona el código, funciones, variables, cadenas, bucles for, arrays, condicionales, operadores, objetos y cómo todos estos elementos interaccionan entre sí.
  • Animaciones I: dibuja formas utilizando la popular librería 3D, definiendo funciones, callbacks y animaciones.
  • Animaciones II: creación de funciones más complejas con 3D y los temas del curso The Fundamentals.

2. ¿Qué debo hacer después de usar Grasshopper?


Si has disfrutado de Grasshopper y deseas llevar sus habilidades de codificación al siguiente nivel, el equipo ha identificado varias opciones en las que puedes continuar su viaje de codificación:

  • Seguir recibiendo clases en línea:: nos hemos asociado con Coursera, una compañía que trabaja con las principales universidades para ofrecer cursos online. Estas son algunas de las clases que ofrecen y que podrían ser el próximo paso perfecto después de completar The Fundamentals:
    * Fundamentos de programación con JavaScript, HTML y CSS
    * Algoritmos, Parte 1
    * Especialización en diseño web + Portafolio y certificado
  • Ir a un bootcamp: para los estudiantes con sede en EEUU, en Seattle, St. Louis, Kansas City, Miami o Tampa, también nos hemos asociado con LaunchCode, una organización sin fines de lucro, para ofrecer campos de entrenamiento de codificación gratuitos a un número selecto de estudiantes.
    Puedes registrarte aquí.
Además, si estás interesado en una carrera basada en la tecnología, considera inscribirte en el programa de Certificación Profesional de Soporte de TI de Google + Coursera.


Grasshopper App


3. ¿Cómo puedo obtener la aplicación?



4. ¿Qué debo hacer si quiero eliminar mi cuenta de Grasshopper?


Envía un correo electrónico a grasshopper-support@google.com y el equipo de soporte te ayudará a eliminar tu cuenta.


26 de marzo de 2018

StackOverflow: ya están disponibles los resultados de la encuesta anual de desarrolladores 2018

The Mosted - App de noticias
StackOverflow acaba de publicar los resultados de la encuesta anual de desarrolladores para este año 2018. La encuesta ha tenido lugar el pasado mes de enero y han participado más de 100.000 encuestados de todo el mundo, por lo que se trata de la encuesta más amplia y completa en el ámbito del desarrollo de software.


Los resultados reflejan tendencias de la comunidad de desarrolladores como cuales son los lenguajes más queridos y los más temidos, que herramientas de trabajo usan a diario, preferencias laborales y temas de carácter novedoso como la inteligencia artificial o la ética en la codificación.

Developer Survey 2018 - StackOverflow

¿Qué es StackOverflow?


Stack Overflow es una plataforma que lleva una década siendo el mayor referente para el mundo de la programación.

Este portal es utilizado por una comunidad de desarrolladores informáticos para encontrar soluciones a problemas de programación en diferentes lenguajes.

El uso del sitio web es muy sencillo: el usuario se registra, hace pública su pregunta, y recibe las respuestas.

Las respuestas son publicadas por los miembros de una comunidad determinada o por otros usuarios con las mismas experiencias que encontraron solución al problema planteado.

Todos los usuarios pueden votar por las preguntas y por sus respuestas, cuando se vota por una pregunta, el usuario puede calificarlas como más relevante o menos relevante; por otra parte, cuando se vota por las respuestas, éstas pueden ser más acertadas o menos acertadas.

Cada mes, cerca de 50 millones de personas visitan StackOverflow para aprender, compartir y construir sus carreras.
Se estima que 21 millones de estas personas son desarrolladores profesionales y estudiantes de nivel universitario.

Cada año desde 2011, Stack Overflow ha preguntado a los desarrolladores sobre sus tecnologías favoritas, hábitos de codificación y preferencias de trabajo, así como también sobre cómo aprenden, comparten y suben de nivel o escalafón profesional.

Algunas conclusiones de los resultados de este año


  • DevOps (metodología para creación de software) y el aprendizaje automático son tendencias importantes en la industria del software actual. Los idiomas y marcos asociados con este tipo de trabajos van en aumento, y los desarrolladores que trabajan en estas áreas obtienen los salarios más altos.
  • Los desarrolladores son, en general, optimistas sobre las posibilidades que ofrece la inteligencia artificial, pero no están de acuerdo sobre cuáles son los peligros de la IA.
  • Python ha aumentado en los rangos de lenguajes de programación en nuestra encuesta, superando a C# en popularidad este año, al igual que superó a PHP el año pasado.
  • Las mujeres dicen que sus mayores prioridades son la cultura de la compañía y las oportunidades para el desarrollo profesional, mientras que los hombres dicen que sus mayores prioridades son la remuneración y el trabajo con tecnologías específicas.

Lenguajes de programación, scripting y marcado


JavaScript
  • 69.8%
HTML
  • 68.5%
CSS
  • 65.1%
SQL
  • 57.0%
Java
  • 45.3%
Bash/Shell
  • 39.8%
Python
  • 38.8%
C#
  • 34.4%
PHP
  • 30.7%
C++
  • 25.4%
C
  • 23.0%
TypeScript
  • 17.4%
Ruby
  • 10.1%
Swift
  • 8.1%
Assembly
  • 7.4%
Go
  • 7.1%
Objective-C
  • 7.0%
VB.NET
  • 6.7%
R
  • 6.1%
Matlab
  • 5.8%
VBA
  • 4.9%
Kotlin
  • 4.5%
Scala
  • 4.4%
Groovy
  • 4.3%
Perl
  • 4.2%


Framework, librerías y herramientas


Node.js
  • 49.6%
Angular
  • 36.9%
React
  • 27.8%
.NET Core
  • 27.2%
Spring
  • 17.6%
Django
  • 13.0%
Cordova
  • 8.5%
TensorFlow
  • 7.8%
Xamarin
  • 7.4%
Spark
  • 4.8%
Hadoop
  • 4.7%
Torch/PyTorch
  • 1.7%


Bases de Datos


MySQL
  • 58.7%
SQL Server
  • 41.2%
PostgreSQL
  • 32.9%
MongoDB
  • 25.9%
SQLite
  • 19.7%
Redis
  • 18.0%
Elasticsearch
  • 14.1%
MariaDB
  • 13.4%
Oracle
  • 11.1%
Microsoft Azure
  • 7.9%
Google Cloud Storage
  • 5.5%
Memcached
  • 5.5%
Amazon DynamoDB
  • 5.2%
Amazon RDS/Aurora
  • 5.1%
Cassandra
  • 3.7%
IBM Db2
  • 2.5%
Neo4j
  • 2.4%
Amazon Redshift
  • 2.2%
Apache Hive
  • 2.2%
Google BigQuery
  • 2.1%
Apache HBase
  • 1.7%


Plataformas


Linux
  • 48.3%
Windows Desktop or Server
  • 35.4%
Android
  • 29.0%
AWS
  • 24.1%
Mac OS
  • 17.9%
Raspberry Pi
  • 15.9%
WordPress
  • 15.9%
iOS
  • 15.5%
Firebase
  • 14.5%
Azure
  • 11.0%
Arduino
  • 10.6%
Heroku
  • 10.5%
Google Cloud Platform/App Engine
  • 8.0%
Serverless
  • 4.5%
Drupal
  • 3.0%
Amazon Echo
  • 2.9%
Windows Phone
  • 2.7%
SharePoint
  • 2.7%
ESP8266
  • 2.2%
Salesforce
  • 2.2%
Apple Watch or Apple TV
  • 1.9%
IBM Cloud or Watson
  • 1.4%
Google Home
  • 1.4%
Gaming console
  • 1.3%
Mainframe
  • 0.8%


Podéis visualizar todos los datos de la encuesta en el siguiente link:

Developer Survey Results 2018




25 de marzo de 2018

The Mosted - la app de noticias para tu smartphone

The Mosted - App de noticias
Antes de comenzar, en caso de que no hayáis oído hablar de ello antes, Flutter es una SDK de aplicaciones de Google, que sirve para crear "aplicaciones móviles modernas". Está en fase beta desde Marzo, pero viene con una gran documentación y herramientas, incluyendo algunas aplicaciones de producción ya en el mercado.


Por Antonio Bernardino, CTO y Cofundador de The Mosted.

¿por qué los desarrolladores de aplicaciones nativas deben considerar seriamente Flutter?


Soy un desarrollador aficionado, y acabamos de lanzar nuestra aplicación usando Flutter.

Solo para que entendáis que tipo de aplicación hemos lanzado, se trata de un agregador de noticias con el cual puedes seleccionar tus propios intereses y fuentes preferidas, y leer todas las noticias al instante, en un solo lugar.

Cierto es que existen apps similares en el mercado, pero nos diferenciamos por la sencillez del funcionamiento y por los elementos sociales que iremos incorporando en los próximos meses.

Queremos unificar el agregador con una plataforma social que permita a los usuarios no solo leer noticias, sino también compartir y generar experiencias sociales a través de ellas.

La hemos llamado The Mosted y está disponible tanto en Android como iOS.

De vuelta con Flutter... Deciros que desarrollar en Flutter fue una experiencia tan placentera que debía compartirla con la comunidad.

Me llevó alrededor de 15 días codificar la mayor parte de la app, incluido el tiempo que le dediqué a aprender a usar la SDK.

En los intentos previos, desarrollamos aplicaciones nativas en Android / Java e iOS / Swift 4, que estaban siempre en diferentes fases de desarrollo. Pero Flutter no solo nos ayudó a construir rápido, sino más importante aún, nos ayudó a tener la apps en los diferentes sistemas operativos al mismo nivel. ¡Fue muy divertido! No hace falta decir que ahora ya soy fan de Flutter.

La primera vez que me topé con Flutter fue en Enero de este año. Estaba todavía en Alpha. No profundicé demasiado, y mentalmente lo metí en la misma categoría que React Native, que también está bien. Pero este mes pasado, Google la pasó a Beta y me decidí a echarle un vistazo.

Solo a simple vista, la comparación con React Native era bastante obvia. A nivel conceptual, las similitudes comienzan y terminan con el modelo de programación reactiva. No obstante, en mi humilde opinión, Flutter da un salto generacional en términos de ideas clave que ha implementado. Como desarrollador, también intenté usar React un par de veces, pero realmente nunca me gustó demasiado porque usa mucho HTML.

Estoy acostumbrado a programar en Java y Javascript y sinceramente pienso que Dart no ofrece mucha ventaja sintáctica, los formatters son horribles y los code-styles un poco confusos. Si te gustan los estilos claros, te aconsejo probar Golang, lo uso desde hace 4 meses y es el lenguaje más claro y fácil de aprender del momento.

Donde realmente destaca Flutter es un par de funcionalidades como los estilos compartidos (las apps son totalmente iguales en Android y en iOS) y en el Hot-reload, que para mí es todavía mejor que el de Java, derivado de la forma en que almacena los estados y que te permite cambiar todo el design y visualizarlo en 2 segundos.

La advertencia es que Flutter es nuevo, por lo que existen problemas y limitaciones y, por supuesto, problemas desconocidos que pueden surgir. No obstante, muchas limitaciones son un objetivo claro para el equipo de desarrollo de Flutter y estoy seguro que se irán resolviendo rápidamente.


Sobre The Mosted


The Mosted es una startup de Barcelona que ha desarrollado una plataforma que recoge en tiempo real las noticias publicadas por los principales medios de comunicación y las categoriza por intereses.

Esta plataforma funciona además con un algoritmo que a través de tecnología machine learning y sentiment analysis ofrece al usuario contenido relacionado de forma que quien usa la app solo encuentre contenido de su interés sin información intrusiva ni contenido que no le interese.

Una de las apuestas principales del proyecto es luchar contra las noticias falsas, que es uno de los grandes problemas de la industria de la información actualmente, que a través de la tecnología desarrollada y la participación de usuarios se podrá limitar.

Además, la compañía organiza eventos de forma gratuita en colaboración con espacios de Coworking en Barcelona.

Sus speakers o partners han sido tanto empresas locales como Vive Virtual (realidad virtual) o también a nivel internacional con la CNN (Reino Unido).

El próximo speaker será un Software Engineer de una de las grandes tecnológicas que dará un speech "live" desde San Francisco sobre Coches Autónomos y la industria en general.

El evento tendrá lugar el próximo martes 27 de Marzo a las 18:45 en Spaces Barcelona 22@, el centro de innovación de Barcelona:

El Coche Autónomo de Silicon Valley . Público · Organizado por The Mosted

Información sobre el evento


Conoce todo sobre el Coche Autónomo y lo que las grandes tecnológicas de Silicon Valley se traen entre manos:

- ¿Qué es un Coche Autónomo? ¿Cómo funciona? ¿Como sabe si un peatón pretende cruzar o está solamente parado? ¿En qué se diferencia las fases de perception y motion planning?

- ¿Quiénes son los big players de la industria? ¿Es Tesla el pionero del mercado? ¿Está construyendo Apple su propio coche autónomo? ¿Cómo se diferencian el Model S (Tesla) del Waymo (Google) o del coche autónomo de Uber?

- ¿Cuál es la proyección de la industria de aquí al 2025?

Coche autónomo