sábado, 29 de febrero de 2020

Lectura recomendada: "Lovemarks: El futuro mas allá de las marcas". Kevin Roberts

Microsoft, Apple y Amazon han coliderado la primera posición en el ranking de empresas tecnológicas mas valoradas del pasado 2019. La más longeva se ha apropiado el primer puesto. Este libro explica como encontrar el camino para que "consumidores inspiradores", permitan hacerte crecer. Muchos directivos de Microsoft seguro que han aplicado las ideas de Kevin Roberts.

Haber cursado el año pasado un micro MBA, además de conocimientos, te permite tener una lista de libros recomendados e interesantes, que difícilmente puedes conocer, si no estás vinculado profesionalmente a una área concreta dentro de cualquier empresa.

El marketing cada vez es más necesario en el mundo IT. Tomar malas decisiones, te puede hacer caer del top 5. Facebook se mantiene por WhatsApp e Instagram. Sin esas dos empresas caería del top 10.


Resultado de imagen de valoracion empresas tecnologicas


También es necesario remarcar que un Marketing lanzado para llegar al corazón, te puede mantener en la cresta de la ola muchos años. En realidad te puede perdurar como top 3, sin la necesidad de innovar de manera disruptiva. Los adeptos de Apple siempre quieren vivir emociones con sus productos. Esperan que la versión de software de sus dispositivos les ayude en si día a día, pero siempre con un diseño UX/UI excelente. Y con velocidades de ejecución muy elevadas.

Para conseguirlo debes comprar el ultimo hardware. Es un recurrente que hace que los de Cupertino se mantengan siempre en los primeros puestos dependiendo de la valoración bursátil del momento.

Resultado de imagen de apple vs microsoft
Si hablamos de Microsoft, el gran cambio en la la cúpula de la empresa, consolida una subida espectacular dentro de las empresas mejor valoradas económicamente. En esta batalla, ambas empresas pretenden suministrar con sus productos y servicios, soluciones importantes para el consumidor, cumpliendo las cuatro máximas de una empresa Lovemark: regularidad, calidad, rendimiento valor.


Resultado de imagen de emociones marketing
"...ya no se venden productos o servicios, buscamos y compramos experiencias, emociones y sensaciones..."
Obviamente no todos los servicios pueden ser vendidos bajo esa premisa. Pero Apple sabe mucho de como influir en sus consumidores para satisfacer sus necesidades. Y no es punible. Otra cosa es que se tenga el bolsillo para poder adquirir esa simbiosis perfecta entre dispositivos y el software que los gestiona.  


Dentro de la amalgama de productos que Microsoft brinda a sus consumidores, usuarios y empresas, vemos que el gran acierto de Nadella pasa por entender el cambio en la manera de comercializar los productos. Azure representa hoy en día el su principal fuente de sus ingresos. 

Resultado de imagen de azure
Si ademas sumamos las ventas del ERP competidor de SAP, Dynamics 365 (Axapta), vemos que apenas ganan dinero con la  venta de los sistemas operativos.

Se han movido de manera sólida y relativamente rápida. Han permitido a la comunidad desarrolladora de software, construir sus soluciones codificando de inmediato con la pila tecnológica que ya conoce y prefiere, sin necesidad de aprender ningún lenguaje o plataforma nuevos. Ya sean servicios web y API hasta scripts de automatización o flujos de trabajo de Machine Learning, todo puede ser creado en un escenario Azure.
"Nadella ha conseguido que Microsoft genere empatía, admitiendo que tenía un montón de cosas que escuchar." 
Es además por este motivo que Apple pudo llegar a equivocarse y ser perdonada. Es la gran recompensa por ser una Lovemark.

Guardando las distancias, el vídeo de Telecom New Zealand con música de Cat Stevens, impacta al consumidor, como también impacta la comunicación fresca y moderna de Pepephone.



El libro habla de como consiguieron que el músico aceptara usar su canción en este vídeo del 2005. Hay que reconocer que detrás de un servicio de telecomunicaciones, existe una amalgama de conexiones, electrónica de red, software de gestión y obras físicas que el vídeo no muestra. De hecho no muestra nada de tecnología. Es la tendencia desde hace tiempo.

El autor argumenta que "las Lovemarks necesitan investigación, pero un tipo de investigación que cuente los latidos del corazón en lugar de los dedos de la mano".

Toda empresa tecnológica debe buscar el alto amor y un alto respeto por parte de sus usuarios: tanto los empresariales como los residenciales. Las "Marcas" tienen alto respeto pero no provocan un cambio o renovación de inmediato por parte de los consumidores del producto.

Aquellas marcas que se posicionen en la parte derecha superior de un hipotético eje amor / respeto, lograrán crear la necesidad del cambio inmediato por el nuevo modelo. Nuevas prestaciones que permitirán mejorar en el día a día.

Siempre incidiendo en los productos, donde una obsolescencia programada ayuda a dar el salto en la compra (como en el caso de los smartphone). Esta arma tiene efectos negativos por parte de los usuarios, pues consideran que no es necesario cambiar el producto, si este no presenta un fallo físico irremediable. Por esta razón, para emocionar con el fin de provocar el cambio, se debe mostrar las mejores prestaciones, dejando claro que esas nuevas funcionalidades necesitan de mejor capacidad de proceso. Si no se precisan,  podemos conservar tal y como está el producto tecnológico, no actualizando los sistemas operativos (sean de ordenador, tableta o smartphone) y, obviamente manteniendo el dinero en nuestro bolsillo.

Con el permiso del autor de este gran libro, un link a la presentación de la campaña "Think different" por parte de Steve Jobs. Hay que reconocer que sus intervenciones son dignas de ser escuchadas. Detrás de cada presentación existe el trabajo de mucha gente. El deja claro el "Storybrand" de Apple y, ejecuta una exposición soberbia.



El autor del libro considera importante antes de promocionar un producto, conocer a los clientes cerca del momento en que deciden su compra. O cerca del momento donde se plantean la necesidad en el punto de venta. El feedback recibido por ellos ayuda a mejorar el producto y/o servicio. En si es una de las claves de la filosofía Lean.


Un libro imprescindible para comprender por donde evolucionarán las empresas  top, para poder comercializar sus productos. El diseño del libro es excelente, realizado con mucho gusto y, con páginas donde se obliga el lector en fijarse en los detalles.

La cita:


"El significado de CEO debería ser Chief EXCITEMENT Officer." Kevin Roberts 

domingo, 5 de enero de 2020

¿Google strikes again? Linux VM en Chrome OS sobre Chromebox HP Gen 2 para desarrollo Web.


Resultado de imagen de hp chromebox gen 2Plataformado de un Chromebox HP Gen 2 para desarrollo .NET contra App API REST corriendo en servidor JavaScript Node.js, usando Visual Studio Code y KVM Debian sobre Chrome OS. Futuro esperanzador para  este sistema operativo si consigue seducir a la comunidad desarrolladora Web. 

Asumiendo que los informáticos nos tenemos que adaptar a la evolución que la tecnología ofrece a los sistemas informáticos (mundo IT) en cualquiera de sus variantes - FrontEnd, BackEnd y FullStack - , a finales del 2019 entra en cartera un proyecto con necesidad de conectar una aplicación .NET que consume datos de SQL Server en un servidor local (POS), a un vertical del sector de transporte a través de una API REST CRUD corriendo bajo un motor Javascript (Node.js).





Era necesario tener un entorno de pruebas de manera eficiente y rápido para, valorar la viabilidad del desarrollo antes de finalizar el 2019. Existe muchísima literatura en la red para poder instalar "distros" de Linux y, poder correr un servidor de aplicaciones basado en el motor de JavaScript Chrome V8, es decir Node.js.

Para poder generar un análisis en las modificaciones a realizar en proyectos ya validados  y valorar su desarrollo, necesitábamos un escenario real de pruebas para adaptar rápidamente nuestro código .NET según las especificaciones que se usarían en el proyecto. Era necesario disponer de un ordenador con sistema operativo que no penalizara la creación del mencionado escenario y, su posterior cotización del proyecto. Nos decidimos por un Chromebox de HP con Chrome OS por su simplicidad en gestión y, su posterior mantenimiento tras la posibilidad de activar una distribución de Debian dentro de el mismo hardware, manteniendo su sistema operativo nativo Chrome OS.

Este es su despiece y sus especificaciones del Celeron adquirido - existen CPUs i5 / i7 con mejores prestaciones - consultable en el el manual de mantenimiento que HP tiene disponible en sus servidores: http://h10032.www1.hp.com/ctg/Manual/c06011401):

  • HP Chromebox G2
  • Intel Celeron® 3865U 1.80-GHz, dual-core processor (2.0-MB L3 cache, 2133-MHz, 15-W).
  • Intel HD graphics 610
  • Memory Two SODIMM memory module slots 4096 MB (4096 MB × 1) 
  • Storage Solid-state hard drive (2242, M.2, SATA-3) 32 GB (ampliable)
  • Audio Realtek ALC5662 HD Audio Audio Codec
  • Wireless Integrated wireless options with dual antennas (M.2/PCIe)
  • Intel Dual Band Wireless-AC 7265 802.11 AC 2×2 WiFi + Bluetooth 4.2 Combo Adapter (non-vPro)
  • External media cards HP Multi-Format Digital Media Card Reader
  • Supports SD/SDHC/SDXC


(1) Top cover 
(2) Metal top shield (includes antenna) 
(3) Rear I/O bracket 
(4) Power button board 
(5) Power button board cable 
(6) Fan
(7) Heat sink 
(8) Memory modules 4 GB 
(9) Memory cover 
(10) Mylar Kit (for use when replacing bottom cover)
(11) Intel Dual Band Wireless-AC 7265 802.11 AC 2×2 WiFi + Bluetooth 4.2 Combo Adapter
(non-vPro) WLAN module
(12) Solid-state drive (M.2, SATA-3) 32 GB
(13) Solid-state drive absorber 
(14) System board (includes processor and replacement thermal material): Equipped with an Intel Celeron 3865U processor
(15) HDMI gasket 
(16) Bottom shield 
(17) Power connector bracket
(18) Power connector cable L17259-001
(19) Bottom cover L17258-001
(20) Rubber feet L17271-001

En las ultimas releases de Chrome OS - a partir de la 69 -, Google permite ejecutar binarios nativos de Linux. Es decir, podemos bajarnos el paquete para Debian de Visual Studio Code e instalarlo. Nos aparecerá el icono de Visual Studio en el sistema operativo Chrome OS. Si queremos podemos anclarlo en la barra de sistema del sistema operativo.
Resultado de imagen de API REST NODE.js
Esto lo consiguen mediante su proyecto Crostini: una tecnología que hace uso de virtualización a través de KVM. Kernel-based Virtual Machines, es una solución para implementar virtualización completa con Linux. "KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc." Fuente: Wikipedia.

Tiene un poco de "delay" la ejecución del aclamado editor de código VS Code de Microsoft, pero una vez ejecutado, no hay razón alguna para pensar que está corriendo sobre un contenedor (Virtual Machine) dentro de Chrome OS. La compatibilidad con Linux es importante para la comunidad desarrolladora; los Chromebook tiene una autonomía de batería envidiable, los Chromebox tienen una capacidad de proceso importante con el Intel en su interior. Ademas es la tendencia en computación, mini cajas que no hacen ruido (fanless), con una gráfica aceptable (4K) y con posibilidad de ampliación de RAM, disco duro SSD e instalación de dos pantallas. Todo esto en un tamaño de ordenador que deja libre las mesas de trabajo, o el comedor o las habitaciones...en definitiva cualquier estancia. Y si se prefiere, se puede fijar en la parte posterior de la pantalla (anclaje VESA).


Podemos instalar IDEs (entornos de programación) y programas necesarios para el desarrollo en entorno web, en cualquiera de sus variantes.

Una vez comprobado en los vídeos de Google I/O 2019 "Linux for Chrome OS", los principios del diseño de "Crostini" hacen que la capa de virtualización, mantenga una seguridad excelsa entre lo que se esta ejecutando en Chrome OS con lo que esté "levantado" en la VM. En realidad los contenedores del Linux, tiene acceso sólo a su contenedor. No pueden interactuar con los demás contenedores. 

La experiencia de usuario es impresionante, pues tan solo es necesario activar el switch "Linux" en la configuración de Chrome OS para tener un linux operativo. Nos habrá creado un nuevo icono llamado "Terminal" en los iconos de las aplicaciones, que es una shell de Debian totalmente funcional.

Para instalar las aplicaciones, se deben bajar los paquetes en el Chrome OS y copiarlos a la carpeta "Ficheros de Linux", para que aparezcan en la carpeta /home/{usuario}.

Esta tan separado que para poder acceder a una app servidora corriendo en el motor JavaScript (Node.js) en el Chromebox, es necesario "natear" con una extensión dentro navegador Chrome para, permitir ser visible desde una máquina W7, W10 o cualquier otro dispositivo dentro de la misma red. Es el único pequeño "tuning" necesario en Chrome OS.

Este es el guión que hemos seguido para poder hacer el escenario de pruebas requerido (con los enlaces de ayuda):

1.- Activar Linux en Chrome OS para tener un Kernel en un contenedor (KVM) de una distribución Debian totalmente operativa: https://medium.com/@jacoboakley/web-development-with-a-chromebook-terminal-setup-dc0d4668d411


2.- Instalar Node.js :


Cambiar la versión de la linea siguiente por la que corresponda en el momento de la instalación (en nuestro caso versión 12.X):

      curl -sl https://deb.nodesource.com/setup_10.x | sudo -E bash -


Una vez instalados tanto node.js como el gestor de paquetes deberíamos comprobar las versiones instaladas en la VM de Debian tal y como se muestra en la siguiente imagen. 



NOTA: Instalar proyecto de Github -> https://github.com/FaztWeb/express-basic-restapi


3.- Instalar VS Code de https://code.visualstudio.com/#alt-downloads seleccionando Linux y paquete para Debian / Ubuntu (.deb):

(si da error la instalación del paquete desde Shell -> sudo apt-get install -f. Correr otra vez la instalación después de hacer correr el fix anterior)


4.- Instalar  Connection Forwarder. Aplicar regla personalizada para poder redireccionar el puerto TCP 3000 (o el que corresponda de nuestra aplicación) de localhost a la IP de la VM (container Debian) generalmente 100.115.92.206:3000. Mirar con sudo ifconfig eth0.


Ofrecido por: chromebeat.com

Comentario / inquietud de un usuario de la aplicación: "No idea why Android on ChromeOS needs its own network interface...but this Chrome App can forward connections from localhost in ChromeOS to the Android network interface. Really useful. As a suggestion it might be good to log what's going on or show some indication packets are being forwarded. Many thanks for your efforts!"

Nota: Esta aplicación debe estar "levantada" sin necesidad de tener Chrome abierto. Anclamos la app en barra de sistema y la ejecutamos con la configuración guardada. Tiene que tener la "rayita" debajo que nos indica que se está ejecutando.

5.- En la máquina W7 de entorno de desarrollo .NET.

Instalar Postman. Comprobar que accedemos al recurso de pre-producción.



6.- Instalar en el entorno .NET la librería para poder trabajar con JSON. https://www.newtonsoft.com/json la asociamos a nuestro proyecto.


7.- Aplicación VB.NET.

Clase contenedora de TAD película:

Imports Newtonsoft.Json
Public Class pelicula
    Private _id As String
    Private _title As String
    Private _director As String
    Private _year As String
    Private _rating As String
    <Newtonsoft.Json.JsonProperty("id")> Public Property id() As String
        Get
            Return _id
        End Get
        Set(ByVal value As String)
            _id = value
        End Set
    End Property
    <Newtonsoft.Json.JsonProperty("title")> Public Property title() As String
        Get
            Return _title
        End Get
        Set(ByVal value As String)
            _title = value
        End Set
    End Property
    <Newtonsoft.Json.JsonProperty("director")> Public Property director() As String
        Get
            Return _director
        End Get
        Set(ByVal value As String)
            _director = value
        End Set
    End Property
    <Newtonsoft.Json.JsonProperty("year")> Public Property year() As String
        Get
            Return _year
        End Get
        Set(ByVal value As String)
            _year = value
        End Set
    End Property
    <Newtonsoft.Json.JsonProperty("rating")> Public Property rating() As String
        Get
            Return _rating
        End Get
        Set(ByVal value As String)
            _rating = value
        End Set
    End Property
End Class

Código que consume del servidor Node corriendo en Chrome OS HP Gen 2 el recurso dentro de la API REST movies. Ejecuta la librería JSON de Newtonsoft, para volcarla en un array. Posteriormente iteramos sobre esa lista para presentar los datos en el Listbox.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        lbout.Items.Clear()
        Dim request As WebRequest = WebRequest.Create("http://penguin.linux.test:3000/api/movies")
        request.Method = "GET"
        request.ContentType = "application/json;charset=utf-8"
        Dim response As WebResponse = request.GetResponse()
        Me.APIRESTLabel.Text = "Obteniendo respuesta..."
        StatusStrip1.Refresh()
        Dim dataStream As Stream = response.GetResponseStream()
        Dim reader As New StreamReader(dataStream)
        Dim responseFromServer As String = reader.ReadToEnd()
        If responseFromServer = "0" Then
            MsgBox("Fallo en conexión...")
        Else
       Dim peliculas As List(Of pelicula) = JsonConvert.DeserializeObject(Of List(Of pelicula))(responseFromServer)
            'Recorrer la lista para informar en el list box...
            For Each item As pelicula In peliculas
                lbout.Items.Add(item.id & " / " & item.title & " / " & item.director)
            Next
            Me.APIRESTLabel.Text = "Proceso terminado !!!"
            StatusStrip1.Refresh()
        End If
        reader.Close()
        dataStream.Close()
        response.Close()
    End Sub



8.- Quitar hibernación servidor Node.js.  Ir a Configuración > Dispositivo > Batería . Seleccionar de la lista desplegable la opción "Apagar la pantalla" cuando esté inactivo. Esto evitará el apagado del Chromebox.

Conclusión:

El porque de la rápida aceptación de soluciones usando el motor de JavaScript Node.js, viene dada por la unificación de JavaScript en aquellos desarrollos donde exista JavaScript en el lado cliente (FrontEnd). Node.js permite la ejecución de código JavaScript en el lado del servidor (BackEnd), sin la necesidad de un navegador (browser). 

Por otro lado, la escalabilidad del motor es su punto fuerte. Esta pensado para poder soportar una gran cantidad de conexiones simultáneas o, petición de datos de miles de orígenes a la vez. Sea el dispositivo de que sea.

Muchas tecnologías del BackEnd usan hilos independientes para atender las peticiones de sus consumidores de datos. Ante una petición masiva de datos los recursos del servidor pueden caer.

Node.js es gestiona un solo hilo y un bucle de eventos asíncrono, todas las nuevas peticiones son tratadas como eventos en un único bucle. Este es el motivo por el que las características asíncronas y los eventos de JavaScript encajan tan bien en la filosofía de Node.js.

Este diseño de compartir un único hilo de ejecución entre todas las solicitudes atiende a necesidades de aplicaciones altamente concurrentes, en el que toda operación que realice entradas y salidas debe tener una función callback.

Todo cocinado con filosofía Open Source.




El gestor de paquetes npm, permite acceder a miles de librerías Open Source, aptas para incluir en el nacimiento de un desarrollo.

Google golpea otra vez fuerte, con productos como Flutter, Chrome OS, KVM, el motor V8 (base de Node.js) para, no volverse un paquidermo de avanzada edad y movimientos lentos. Si consigue seducir a la comunidad developer de entornos Web, seguirá en la cresta de la ola por muchos años. Buen hardware de HP que hace una simbiosis perfecta con el sistema operativo Chrome OS.

La Cita:

“Una corazonada es la creatividad que está tratando de decir algo”, Frank Capra.