lunes, 17 de junio de 2019

Blockchain como una gigantesca máquina virtual


Confieso que no se me había ocurrido hasta ahora entenderlo de esa forma.

Blockchain es una tecnología que no resulta sencilla de entender y que, quizá, tampoco ha sido demasiado claramente explicada. Pero en lo que se puede ir entendiendo más fácilmente de blockchain, uno se hace a la idea de cómo son los bloques, cómo se unen formando cadenas, cómo se gestionan transacciones o el uso que se hace de la criptografía.

Pero parecen existir otras perspectivas, quizá más rompedoras, y ligadas al concepto de 'smart contracts' o, mejor aún, de aplicaciones distribuidas.

En las primeras páginas del libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood. me sorprendió que hablasen de Ethereum como una máquina virtual a la que, incluso, ponen nombre: Ethereum Virtual Machine (EVM). De hecho, ya en el segundo párrafo del primer capítulo, nos dicen:

Ethereum is a deterministic but practically unbounded state machine, consisting of a globally accesible singleton state and a virtual machine that applies changes to that state.

Unas páginas más adelante nos dicen:

Ethereum state transitions are processed by the Ethereum Virtual Machine (EVM), a stack based virtual machine that executes bytecode (machine language instructions), EVM programs called "smart contracts" are written in high-level languages (e.g. Solidity) and compiled to bytecode for execution on the EVM.


Es una original forma de entenderlo pero, seguramente, resulte clave. Ethereum, aunque también tiene transacciones e incluso su propia critpomoneda ('ether'), pone mucho foco en los smart contracts y las aplicaciones distribuidas, es decir, sin perder elementos de plataformas anteriores de blockchain, se orienta a la ejecución distribuida de software.

Para que la construcción de esas aplicaciones sea eficiente y, digamos universal, en el sentido de independiente de hardware y sistema operativo, conviene se ejecuten y, por tanto, compilen, en el mismo entorno de máquina virtual. Con la particularidad adicional de que la información que usan las aplicaciones forma parte de ese estado único, conocido y compartido por todos los intervinientes, y que reside en la cadena de bloques.

Y dado que Ethereum es una plataforma pública de blockchain, y muy popular, aspira probablemente a la universalidad y, por tanto, esa máquina virtual y ese estado único sean ubicuos ('pervasive') y, por tanto, hayamos convertido a blockchain en una gigantesca máquina virtual.

Es, desde luego, una forma de entender blockchain muy diferente. al menos a mi me lo parece, y que abre nuevas y ambiciosas perspectivas, quizás el propio futuro de blockchain.

miércoles, 12 de junio de 2019

Vídeo: Hoy vengo a hablar de mi libro, La Carrera Digital



Ya he anunciado en este blog la publicación de mi primer libro, 'La Carrera Digital' que acaba de ver la luz en Mayo. En este vídeo, intento explicar un poco la temática del libro y su planteamiento. Espero que te interese.

Aprovecho para anunciar que la presentación oficial tendrá lugar en Madrid el día 25 de Junio a las 19:30 en la sede de la Escuela de Organización Industrial. Por supuesto, estaré encantado de verte y firmarte un ejemplar. No es imprescindible pero, si quieres acudir, es bueno que te apuntes en esta página.



Dónde encontrar el libro

Si tienes interés en adquirir el libro en los siguientes sitios:

Agradecimiento:

Un profundo agradecimiento a Luis Pavía por la filmación y producción del vídeo.


lunes, 10 de junio de 2019

Empatía tecnológica


Quizá, más que de empatía tecnológica, debería hablar de empatía a la hora de comunicar la tecnología.

Creo que en la comunicación de la tecnología, ya sea a nivel de publicidad comercial, ya sea en publicaciones desde las más sencillas como los blogs o las más complejas como los libros, o incluso en la educación en tecnología, se tiende a caer en dos extremos igualmente erróneos o, al menos, igualmente poco acertados.

Por un lado tenemos el extremo simplista, aquel que apenas explica e incluso entiende la tecnología, que la rodea de mitos y lugares comunes e, incluso, con cierta frecuencia, de fantasías y errores conceptuales. Este extremo es habitual en la información comercial o en la divulgación de baja calidad.

El otro extremo es el contrario, el tipo gurú, aquel que, pleno de conocimiento, explica la tecnología sólo para los muy iniciados (quienes, tal vez, no necesiten ya esa comunicación) y, con frecuencia, centrándose mucho en detalles algorítmicos o de implementación y perdiendo (o al menos no transmitiendo) aspectos más generales como el porqué de esa tecnología, la arquitectura o funcionalidad de alto nivel, el esquema general, los beneficios para el negocio, cómo compara con otras similares, etc. Es decir, le falta perspectiva y cercanía.

En ambos casos, pero especialmente en este segundo, creo que se adolece de una cierta empatía, de ponerse en el lugar de quien recibe esa comunicación, de la persona que, con una honrada curiosidad o aspiración al conocimiento o, quizá, necesitada de un desarrollo profesional o empeñado en un desarrollo personal, o incluso, preso de una necesidad de su empresa, aspira a entender, insisto a entender, una tecnología.

Me ha surgido esta reflexión leyendo el libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood, un libro que me ha sido muy recomendado como referencia en el ámbito de blockchain en general, y del blockchain público, Smart Contracts y Ethereum en particular. Un libro que aún estoy leyendo y que, en el punto en que me encuentro, me parece excelente...pero al que, sin embargo, en sus primeras páginas no he tenido más remedio que 'afearle' esa falta de empatía con el lector no tan especializado como los autores, con quien busca, antes que los detalles, una cierta perspectiva. Pero este es sólo un ejemplo, y probablemente no el peor ni mucho menos puesto que, como digo, por lo demás, el libro me parece muy, muy bueno y de un profundo conocimiento.

En realidad, estoy hablando de un problema generalizado, en mi opinión en la comunicación y educación en tecnología. Una perjudicial polarización entre el simplismo y la erudición cuando creo que, la situación más beneficiosa es justo la intermedia: el explicar la tecnología con rigor y conocimiento, pero de forma simple y proporcionando perspectiva amplia y un contexto de alto nivel que la sitúe en su punto justo. 

Y dado lo importante que es la tecnología en el mundo actual, y lo importante que lo será en el mundo futuro. Y dado que lo previsible es que la tecnología siga evolucionando y surjan nuevos conceptos y soluciones. Y dado que para conseguir una implantación efectiva de las tecnologías y una adopción real por las empresas necesitamos que directivos y profesionales entiendan, entiendan de verdad, las tecnologías, haremos bien en mejorar nuestra comunicación acerca de la tecnología y en incrementar esa empatía tecnológica.

lunes, 3 de junio de 2019

Los ocho componentes de una blockchain pública y los ocho componentes de Ethereum


Blockchain es una tecnología muy relevante en el panorama actual pero no es precisamente una tecnología sencilla de entender. Quizá porque es intrínsecamente compleja, quizá porque, en realidad, más que una tecnología por sí misma es una combinación de tecnologías que proporcionan la base para una diversidad de soluciones y casos de uso.

Así que agradezco cualquier aportación que ayude a estructurar y hacer más digerible el mundo del blockchain.

He comenzado a leer una las obras más relevantes publicadas actualmente, a saber, el libro 'Mastering Ethereum' de Andreas M. Antonopoulos y Gavin Wood. En el primer capítulo, de intención divulgativa, los autores identifican los ocho componentes que ellos entienden que suelen estar presentes en todas las plataformas de blockchain públicas. Y estos son los componentes que identifican:

  • Una red Peer-to-Peer que conecte a los participantes y propague las transacciones y los bloques de transacciones verificadas

  • Mensajes, en forma de transacciones, que representen cambios de estado.

  • Un conjunto de reglas de consenso, que gobiernen lo que constituye una transacción y qué transacciones son válidas.

  • Una máquina de estados que procese las transacciones con arreglo a las reglas de consenso.

  • Una cadena de bloques securizada mediante criptografía que recoja todas las transacciones verificadas y aceptadas

  • Un algoritmo de consenso que descentralice el control sobre la cadena de bloques haciendo que los participantes colaboren en el cumplimiento de las reglas de consenso.

  • Un esquema de incentivos que asegure económicamente la máquina de estados en un entorno abierto.

  • Una o más implementaciones de lo anterior en un entorno abierto.

Y luego, hacen un 'mapping' a los ocho componentes específicamente de Ethereum. Y se traduce en lo siguiente:

  • Red Peer-to-Peer: En concreto, Etehereum se ejecuta sobre la red denominada 'Ethereum main network' que se encuentra a nivel de protocolo TCP en el puerto 30303.

  • Reglas de consenso: Ethereum dispone de unas reglas de consenso descritas la especificación de referencia (Yellow Paper).

  • Transacciones: Las transacciones en Ethereum son mensajes de red que incluyen entre otras cosas. al emisor/receptor, el valor y la carga de datos (payload).

  • Máquina de estados: En Ethereum existe la 'Ethereum Virtual Machine' (EVM), una máquina virtual que ejecuta bytecodes y cuyos programas, los llamados contratos inteligentes, se escriben en lenguajes de alto nivel y se compilan a bytecodes para su ejecución.

  • Estructuras de datos: El estado de Ethereum se almacena localmente en cada nodo, como una base de datos, que contiene las transacciones y el estado del sistema en una estructura de datos serializada.

  • Algoritmo de consenso: Ethereum adopta un mecanismos de consenso similar al de Bitcoin en que se usa la firma secuencial de bloques, ponderada por la importancia de la prueba de trabajo ('Proof of Work', PoW) para determinar la cadena más larga y, por tanto, el estado actual.

  • Seguridad económica: Ethereum usa 'Ethash' como algoritmo de PoW.

  • Clientes: Existen ya varias implementaciones de clientes interoperables de los cuales, los más relevantes son 'Go-Ethereum (Geth)' y 'Parity'.

Hay que reconocer que esta explicación, por sí misma, tampoco es precisamente cristalina, pero, aunque todavía hay mucho que 'rascar' para entender realmente blockchain en general, y Ethereum en particular, la identificación de estos ocho componentes creo que ayuda a poner, al menos, esa estructura que voy buscando.

miércoles, 29 de mayo de 2019

Ha llegado la hora. Publico mi primer libro: 'La Carrera Digital'

Ha llegado la hora. Así se titula la introducción del libro 'La Carrera Digital' que acabo de publicar. Y 'ha llegado la hora' es lo que siento en este momento en que, con esta publicación. realizo un sueño muy arraigado en mi y largamente acariciado.

'La Carrera Digital' habla de Transformación digital y en él intento volcar una parte de lo aprendido en casi treinta años de ejercicio profesional, bien acompañado de continuado estudio y actualización personal.

Podría haber hablado de otras muchas cosas, amplio es el abanico de mis intereses, pero tras una inspiración, tras una visualización de lo que el libro podía ser, decidir apostar por este tema. Y espero aportar una visión compresible y rigurosa sobre la realidad de tecnología digital y sobre el significado y, sobre todo, la forma de llevar a cabo una transformación digital.

Hablaré con frecuencia de mi libro en este blog y en mis otros medios sociales, pero hoy, aparte de proporcionar los enlaces al libro en la editorial ExLibric (donde lo he publicado) y en Amazon, me limitaré a dejaros con este vídeo promocional.



¿Donde encontrarlo?

Puedes encontrar el libro en:


miércoles, 22 de mayo de 2019

Ética para Web Scraping

Últimamente oímos hablar de ética en relación con la tecnología, muy especialmente con la Inteligencia Artificial. Y es afortunado que así sea porque la ética es un fundamento de nuestra sociedad y porque, en efecto, algunos avances científicos y tecnológicos desafían tanto el 'status quo' y abren posibilidades tan desafiantes, que conviene acompañarlas, precederlas a ser posible, por un debate ético y una previsión legal.

Pero aunque no me sorprende el oír hablar de ética en contextos como la inteligencia artificial o la edición genética, jamás se me hubiera ocurrido plantear ética en relación con una tecnología tan poco llamativa, en cierto sentido tan 'menor', como es el Web Scraping, es decir, la  utilización de robots para la extracción de información de pantallas de aplicaciones web e incluso interacción con dicha aplicación, una de las tecnologías que habitualmente encontramos integradas en las soluciones de Automatización Robótica de Procesos (RPA).

Por eso me ha llamado la atención el encontrarme unas breves consideraciones éticas en el libro 'Web Scraping with Python' de Ryan Mitchell, cuya lectura estoy finalizando. La pequeña disertación ética se produce ya bastante avanzado el libro cuando la autora se dispone a enseñarnos cómo saltarnos algunas de las protecciones contra robots (contra el web scraping) que algunos.portales habilitan. Y como paso previo, y creo que le honra, se pregunta si es ético enseñar a saltarse esas protecciones. La respuesta, como el lector se puede imaginar, es afirmativa, es decir, es lícito enseñar las técnicas para rodear esas protecciones. Y para ello, aporta tres motivos:

  • En primer lugar, porque hay situaciones en que no sólo es permisible, sino casi aconsejable desde el punto de vista ético utilizar Web Scraping. La autora menciona un trabajo real en que intervino en que unos portales web estaban publicando datos personales de clientes (nombres, direcciones, números de teléfono, etc) sin conocimiento ni consentimiento de esos clientes. La autora fue contratada por algunos de los perjudicados para extraer esa información y contribuir a una demanda formal.

  • Porque, de forma indirecta, enseñar a saltarse las protecciones contra los robots contribuye también a que los desarrolladores de portales puedan protegerse mejor frente a ataques maliciosos. La autora no le da ese nombre pero sería algo así como una especie de 'hacking ético' hecho con base en enseñanza.

  • Finalmente, la autora muestra su convencimiento de que cualquier actividad de divulgación y enseñanza produce al final un saldo neto positivo para la sociedad.

¿Son suficientemente firmes estos argumentos? ¿Los compartiría todo el mundo?

No estoy seguro, pero bueno es que, como mínimo, se planteen esas consideraciones éticas.

A lo mejor deberíamos hacerlo más a menudo.

lunes, 20 de mayo de 2019

Un framework para process mining

El process mining, es decir, el análisis y la gestión de procesos de negocio con base en información de la ejecución de esos procesos, es un campo bastante complejo, lleno de álgebra y algoritmia aunque, en el fondo, la idea que se persigue es bastante fácil de entender.

En su libro 'Process Mining. Data Science in action' de Wil van der Aalst, el autor hace una excelente descripción de todos los conceptos y algoritmos usados en process mining hasta la fecha.

Sin embargo, es cierto que, aun siendo un libro excelente, a veces resulta farragoso y difícil de seguir por la abundancia de formalismos y de algoritmia.

Quizá por eso el propio autor, hacia la mitad de la obra, nos proporciona un 'framework' que sirve de marco general para entender todo el campo del process mining y para agrupar y resumir de alguna manera todo lo visto hasta ese momento.

Por lo ilustrativo y clarificador que resulta, me ha parecido interesante traerlo a este blog. El 'framework' es el que se ilustra en la figura inferior (propiedad del autor y de Springer):



En la parte superior de ese framework se sitúa el 'mundo real' ('world'), un mundo real que es donde existen organizaciones y personas que ejecutan procesos de negocio.

Esos procesos de negocio, en mayor o menor medida están soportados por unos sistemas de información ('information system(s)'. Esos sistemas de información son el origen o procedencia ('provenance') de unos datos en forma de trazas ('logs').

Esas trazas, a su vez, pueden tomarse de instancias o casos de procesos ya finalizados ('historic data') o bien de instancias o casos aún en curso ('current data'). El primer caso nos servirá para lo que se conoce como análisis 'post-mortem' (para, por ejemplo, a nivel individual conocer qué fue mal en una instancia o, a nivel agregado, obtener medidas de los procesos) mientras que en el segundo caso hablaríamos de un análisis 'pre-mortem' que nos debería servir para monitorizar y guiar la ejecución.

En la parte inferior de la figura se observan los modelos de proceso de negocio. Unos modelos que incorporan la información de flujo ('control-flow'), de los datos y reglas de negocio ('data/rules') así como de la organización que los ejecuta y los recursos que utiliza ('resources/organization').

Estos modelos de negocio pueden ser modelos teóricos o 'de jure' es decir los procesos que en teoría se están o deberían estar ejecutando, y los procesos 'de facto' que son los que en la realidad suceden. Las dos flechas, una ascendente y otra descendente, nos hablan de cómo se relacionan los modelos con el mundo real. Los modelos 'de iure' intentan moldear la realidad e influir en ella, es decir, que los procesos que suceden en el mundo real se correspondan con el modelo de proceso teórico (flecha ascendente). Los modelos 'de facto' intentan recoger y representar lo que sucede en el mundo real (flecha descendente).

En la zona media, entre los logs y los modelos de procesos, se desarrolla la actividad del process mining propiamente dicho. Y ahí tenemos las siguientes actividades, recorriendo la figura de derecha a izquierda:

  • 'Cartography:' Se ocupa de describir la realidad, realizando un cierto nivel de abstracción sobre ella. En cierto sentido, se trata de un bloque que mira hacia el pasado. Incluye tres actividades:

    • 'Discover:' quizá lo más representativo del process mining, a saber, deducir el modelo de procesos a partir de la información de las trazas.

    • 'Enhance:' Es decir, revisión de modelos de procesos existentes, bien para hacer correcciones en los mismos, bien para enriquecerlos de alguna manera.

    • 'Diagnose:' En realidad no exactamente process mining, sino análisis de procesos más tradicional. Se ocupa de diagnosticar los procesos de negocio detectando cuellos de botella, ineficiencias o, en general, posibilidades de mejora.

  • 'Auditing' Ahora miramos al presente de los procesos de negocio con la idea, fundamentalmente, de asegurarnos que dichos procesos se ejecutan conforme a lo diseñado y previsto.

    • 'Detect:' Compara los procesos que se están ejecutando con los modelos de proceso 'de jure' y, en caso de detectar inconsistencias, se eleva una alarma o aviso.

    • 'Check:' Compara datos 'post-mortem' de los procesos con los modelos 'de jure' con el objetivo de detectar desviaciones y medir el nivel de cumplimiento 'compliance'.

    • 'Compare:' Compara los modelos 'de facto' con los modelos 'de iure' aunque ahora sin utilizar ya directamente los logs.

    • 'Promote:' Con base en el análisis anterior se `puede promover que algunos aspectos del modelo 'de facto' pasen a los modelos 'de iure', incorporándose como buenas prácticas.

  • 'Navigation:' Finalmente, ahora nos enfocamos al futuro con la idea, por ejemplo, de hacer recomendaciones.

    • 'Explore:' Se comparan los casos en ejecución con las ejecuciones pasadas del mismo modelo de proceso

    • 'Predict:' Combinando la información de los casos actualmente en ejecución con los modelos de proceso, se pueden hacer predicciones respecto al futuro.

    • 'Recommend:' La misma información usada para predecir el futuro se puede usar para emitir recomendaciones (por ejemplo, para intentar minimizar tiempos y/o costes).

La verdad es que visto el framework y entendiendo sus conceptos resulta mucho más sencillo de entender, casi trivial, este, por otro lado, bastante farragoso, campo del process mining.