Proyecto tipo: ICO personalizada

PROBLEMA

Se trata de facilitar a un tercero la creación de una moneda virtual (ICO personalizada).
Así mismo habrá que implementar los medios necesarios para facilitar a sus usuarios la compra-venta de dicha moneda.

Por el momento no está claro para qué se usará dicha moneda, por lo que sólo se considerará un activo digital para acumulación de valor/especulación sin la posibilidad de intercambiarlo directamente por bienes o servicios. Si posteriormente se optase por esta opción, se plantearía una extensión a este desarrollo inicial.

Para la creación de la moneda virtual se pueden seguir diferentes estrategias, por ejemplo:

  • Implementar un token sobre Ethereum
  • Crear una criptomoneda completamente independiente
  • Crear una moneda digital centralizada

Cada uno de estos tiene unos pros y unos contras pero para consideración de este presupuesto, por lo tratado con el cliente, se valorará sólo la primera opción.

Como herramientas para que los usuarios puedan interaccionar con la moneda las opciones también son variadas, considerándose en este presupuesto la planteada por el cliente: web site adaptado para móviles al estilo de Coinbase pero para esta única moneda.

El cliente proporcionará los diseños y estos podrían hacer que variase el presupuesto, por lo que estos deberán proporcionarse antes de comenzar el proyecto para su evaluación, y en su caso modificación de este presupuesto.

Los componentes que contendrá son:
  • Portada
  • Login
  • Dashboard
  • Compra
  • Venta
  • Balances
  • Histórico de transacciones
  • Configuración/Perfil
  • Pasarela de pago (1)
  • Pasarela de cobro (1)
  • Notificaciones por correo electrónico

Toto el sistema se implementaría sobre Azure, el cloud de Microsoft, por ser un proyecto pensado para una corporación y ser Microsoft el principal proveedor de software y servicios corporativos.

Los gastos variables de sistemas y de transacciones entre contratos de Ethereum correrán a cargo del desarrollador durante el desarrollo y la ejecución de pruebas. Dichos gastos, durante la fase de despliegue y ejecución en producción correrán a cargo del cliente, no estando incluidos en este presupuesto.

PRECIO

En la tabla de precio se incluyen algunos componentes opcionales cuyos importes no están sumados al importe final.

Tarea Opcional Precio
1 Auditoría de contratos a extender no 3000
2 Implementación de nuevos contratos no 1500
3 Preparación de infraestructura no 1200
4 Portada no 600
5 Login no 1200
6 Dashboard no 2400
7 Compra no 1200
8 Venta no 1200
9 Balances no 600
10 Histórico de transacciones no 600
11 Configuración/Perfil no 600
12 Pasarela de pago (1) no 1200
13 Pasarela de cobro (1) no 1200
14 Notificaciones por correo electrónico no 600
15 Pasarela de pago adicional si 800
16 Pasarela de cobro adicional si 800
17 Diseño si 1200
Total no opcionales 17.100,00€

Tiempos

El proyecto tiene una estimación de tiempo de entrega de 4 (cuatro) meses, desde la fecha de inicio de los trabajos.

El tiempo podría reducirse a la mitad incrementando el presupuesto en un 50%.

Nota aclaratoria:

Este proyecto tipo, es un ejemplo de proyecto que se ha realizado o se podría realizar. En ningún caso tiene validez como presupuesto real y sólo pretende documentar las distintas posibilidades que existen.

Actualmente, con los cambios que ha habido en cuanto a las posibilidades existentes, la propuesta podría ser diferente en estos momentos.

Se han omitido nombres de empresas y productos.

Por favor, si tuviese necesidad de algo similar, no dude en ponerse en contacto.

Best papers awards in Computer Science of 2018

2018 has finished with a lot of innovations. It brought a lot of awards for papers about several disciplines of Computer Science at different conferences this year. Here we have the abstract of some of them:

  • Memory-Augmented Monte Carlo Tree Search

    This paper proposes and evaluates Memory-Augmented Monte Carlo Tree Search (M-MCTS), which provides a new approach to exploit generalization in online realtime search. The key idea of M-MCTS is to incorporate MCTS with a memory structure, where each entry contains information of a particular state. This memory is used to generate an approximate value estimation by combining the estimations of similar states. We show that the memory based value approximation is better than the vanilla Monte Carlo estimation with high probability under mild conditions. We evaluate M-MCTS in the game of Go. Experimental results show that MMCTS outperforms the original MCTS with the same number of simulations.

  • Finding Syntax in Human Encephalography with Beam Search

    Recurrent neural network grammars (RNNGs) are generative models of (tree,string) pairs that rely on neural networks to evaluate derivational choices. Parsing with them using beam search yields a variety of incremental complexity metrics such as word surprisal and parser action count. When used as regressors against human electrophysiological responses to naturalistic text, they derive two amplitude effects: an early peak and a P600-like later peak. By contrast, a non-syntactic neural language model yields no reliable effects. Model comparisons attribute the early peak to syntactic composition within the RNNG. This pattern of results recommends the RNNG+beam search combination as a mechanistic model of the syntactic processing that occurs during normal human language comprehension.

  • Voice Interfaces in Everyday Life

    Voice User Interfaces (VUIs) are becoming ubiquitously available, being embedded both into everyday mobility via smartphones, and into the life of the home via ‘assistant’ devices. Yet, exactly how users of such devices practically thread that use into their everyday social interactions remains underexplored. By collecting and studying audio data from month-long deployments of the Amazon Echo in participants’ homes-informed by ethnomethodology and conversation analysis-our study documents the methodical practices of VUI users, and how that use is accomplished in the complex social life of the home. Data we present shows how the device is made accountable to and embedded into conversational settings like family dinners where various simultaneous activities are being achieved. We discuss how the VUI is finely coordinated with the sequential organisation of talk. Finally, we locate implications for the accountability of VUI interaction, request and response design, and raise conceptual challenges to the notion of designing ‘conversational’ interfaces.

  • Relevance Estimation with Multiple Information Sources on Search Engine Result Pages

    Relevance estimation is among the most important tasks in the ranking of search results because most search engines follow the Probability Ranking Principle. Current relevance estimation methodologies mainly concentrate on text matching between the query and Web documents, link analysis and user behavior models. However, users judge the relevance of search results directly from Search Engine Result Pages (SERPs), which provide valuable signals for reranking. Morden search engines aggregate heterogeneous information items (such as images, news, and hyperlinks) to a single ranking list on SERPs. The aggregated search results have different visual patterns, textual semantics and presentation structures, and a better strategy should rely on all these information sources to improve ranking performance. In this paper, we propose a novel framework named Joint Relevance Estimation model (JRE), which learns the visual patterns from screenshots of search results, explores the presentation structures from HTML source codes and also adopts the semantic information of textual contents. To evaluate the performance of the proposed model, we construct a large scale practical Search Result Relevance (SRR) dataset which consists of multiple information sources and 4-grade relevance scores of over 60,000 search results. Experimental results show that the proposed JRE model achieves better performance than state-of-the-art ranking solutions as well as the original ranking of commercial search engines.

  • An empirical study on crash recovery bugs in large-scale distributed systems

    In large-scale distributed systems, node crashes are inevitable, and can happen at any time. As such, distributed systems are usually designed to be resilient to these node crashes via various crash recovery mechanisms, such as write-ahead logging in HBase and hinted handoffs in Cassandra. However, faults in crash recovery mechanisms and their implementations can introduce intricate crash recovery bugs, and lead to severe consequences.In this paper, we present CREB, the most comprehensive study on 103 Crash REcovery Bugs from four popular open-source distributed systems, including ZooKeeper, Hadoop MapReduce, Cassandra and HBase. For all the studied bugs, we analyze their root causes, triggering conditions, bug impacts and fixing. Through this study, we obtain many interesting findings that can open up new research directions for combating crash recovery bugs.

  • Delayed Impact of Fair Machine Learning

    Fairness in machine learning has predominantly been studied in static classification settings without concern for how decisions change the underlying population over time. Conventional wisdom suggests that fairness criteria promote the long-term well-being of those groups they aim to protect.
    We study how static fairness criteria interact with temporal indicators of well-being, such as long-term improvement, stagnation, and decline in a variable of interest. We demonstrate that even in a one-step feedback model, common fairness criteria in general do not promote improvement over time, and may in fact cause harm in cases where an unconstrained objective would not.
    We completely characterize the delayed impact of three standard criteria, contrasting the regimes in which these exhibit qualitatively different behavior. In addition, we find that a natural form of measurement error broadens the regime in which fairness criteria perform favorably.
    Our results highlight the importance of measurement and temporal modeling in the evaluation of fairness criteria, suggesting a range of new challenges and trade-offs.

  • Large-Scale Analysis of Framework-Specific Exceptions in Android Apps

    Mobile apps have become ubiquitous. For app developers, it is a key priority to ensure their apps’ correctness and reliability. However, many apps still suffer from occasional to frequent crashes, weakening their competitive edge. Large-scale, deep analyses of the characteristics of real-world app crashes can provide useful insights to guide developers, or help improve testing and analysis tools. However, such studies do not exist — this paper fills this gap. Over a four-month long effort, we have collected 16,245 unique exception traces from 2,486 open-source Android apps, and observed that framework-specific exceptions account for the majority of these crashes. We then extensively investigated the 8,243 framework-specific exceptions (which took six person-months): (1) identifying their characteristics (e.g., manifestation locations, common fault categories), (2) evaluating their manifestation via state-of-the-art bug detection techniques, and (3) reviewing their fixes. Besides the insights they provide, these findings motivate and enable follow-up research on mobile apps, such as bug detection, fault localization and patch generation. In addition, to demonstrate the utility of our findings, we have optimized Stoat, a dynamic testing tool, and implemented ExLocator, an exception localization tool, for Android apps. Stoat is able to quickly uncover three previously-unknown, confirmed/fixed crashes in Gmail and Google+; ExLocator is capable of precisely locating the root causes of identified exceptions in real-world apps. Our substantial dataset is made publicly available to share with and benefit the community.

  • SentiGAN: Generating Sentimental Texts via Mixture Adversarial Networks

    Generating texts of different sentiment labels is getting more and more attention in the area of natural language generation. Recently, Generative Adversarial Net (GAN) has shown promising results in text generation. However, the texts generated by GAN usually suffer from the problems of poor quality, lack of diversity and mode collapse. In this paper, we propose a novel framework – SentiGAN, which has multiple generators and one multi-class discriminator, to address the above problems. In our framework, multiple generators are trained simultaneously, aiming at generating texts of different sentiment labels without supervision. We propose a penalty based objective in the generators to force each of them to generate diversified examples of a specific sentiment label. Moreover, the use of multiple generators and one multi-class discriminator can make each generator focus on generating its own examples of a specific sentiment label accurately. Experimental results on four datasets demonstrate that our model consistently outperforms several state-of-the-art text generation methods in the sentiment accuracy and quality of generated texts.

  • Understanding Ethereum via Graph Analysis

    Being the largest blockchain with the capability of running smart contracts, Ethereum has attracted wide attention and its market capitalization has reached 20 billion USD. Ethereum not only supports its cryptocurrency named Ether but also provides a decentralized platform to execute smart contracts in the Ethereum virtual machine. Although Ether’s price is approaching 200 USD and nearly 600K smart contracts have been deployed to Ethereum, little is known about the characteristics of its users, smart contracts, and the relationships among them. To fill in the gap, in this paper, we conduct the first systematic study on Ethereum by leveraging graph analysis to characterize three major activities on Ethereum, namely money transfer, smart contract creation, and smart contract invocation. We design a new approach to collect all transaction data, construct three graphs from the data to characterize major activities, and discover new observations and insights from these graphs. Moreover, we propose new approaches based on cross-graph analysis to address two security issues in Ethereum. The evaluation through real cases demonstrates the effectiveness of our new approaches.

  • LegoOS: A Disseminated, Distributed OS for Hardware Resource Disaggregation

    The monolithic server model where a server is the unit of deployment, operation, and failure is meeting its limits in the face of several recent hardware and application trends. To improve heterogeneity, elasticity, resource utilization, and failure handling in datacenters, we believe that datacenters should break monolithic servers into disaggregated, network-attached hardware components. Despite the promising benefits of hardware resource disaggregation, no existing OSes or software systems can properly manage it. We propose a new OS model called the splitkernel to manage disaggregated systems. Splitkernel disseminates traditional OS functionalities into loosely-coupled monitors, each of which runs on and manages a hardware component. Using the splitkernel model, we built LegoOS, a new OS designed for hardware resource disaggregation. LegoOS appears to users as a set of distributed servers. Internally, LegoOS cleanly separates processor, memory, and storage devices both at the hardware level and the OS level. We implemented LegoOS from scratch and evaluated it by emulating hardware components using commodity servers. Our evaluation results show that LegoOS’s performance is comparable to monolithic Linux servers, while largely improving resource packing and failure rate over monolithic clusters.

  • Should I Follow the Crowd? A Probabilistic Analysis of the Effectiveness of Popularity in Recommender Systems

    The use of IR methodology in the evaluation of recommender systems has become common practice in recent years. IR metrics have been found however to be strongly biased towards rewarding algorithms that recommend popular items –the same bias that state of the art recommendation algorithms display. Recent research has confirmed and measured such biases, and proposed methods to avoid them. The fundamental question remains open though whether popularity is really a bias we should avoid or not; whether it could be a useful and reliable signal in recommendation, or it may be unfairly rewarded by the experimental biases. We address this question at a formal level by identifying and modeling the conditions that can determine the answer, in terms of dependencies between key random variables, involving item rating, discovery and relevance. We find conditions that guarantee popularity to be effective or quite the opposite, and for the measured metric values to reflect a true effectiveness, or qualitatively deviate from it. We exemplify and confirm the theoretical findings with empirical results. We build a crowdsourced dataset devoid of the usual biases displayed by common publicly available data, in which we illustrate contradictions between the accuracy that would be measured in a common biased offline experimental setting, and the actual accuracy that can be measured with unbiased observations.

  • SuRF: Practical Range Query Filtering with Fast Succinct Tries

    We present the Succinct Range Filter (SuRF), a fast and compact data structure for approximate membership tests. Unlike traditional Bloom filters, SuRF supports both single-key lookups and common range queries: open-range queries, closed-range queries, and range counts. SuRF is based on a new data structure called the Fast Succinct Trie (FST) that matches the point and range query performance of state-of-the-art order-preserving indexes, while consuming only 10 bits per trie node. The false positive rates in SuRF for both point and range queries are tunable to satisfy different application needs. We evaluate SuRF in RocksDB as a replacement for its Bloom filters to reduce I/O by filtering requests before they access on-disk data structures. Our experiments on a 100 GB dataset show that replacing RocksDB’s Bloom filters with SuRFs speeds up open-seek (without upper-bound) and closed-seek (with upper-bound) queries by up to 1.5× and 5× with a modest cost on the worst-case (all-missing) point query throughput due to slightly higher false positive rate.

  • A Constant-Factor Approximation Algorithm for the Asymmetric Traveling Salesman Problem

    We give a constant-factor approximation algorithm for the asymmetric traveling salesman problem. Our approximation guarantee is analyzed with respect to the standard LP relaxation, and thus our result confirms the conjectured constant integrality gap of that relaxation.
    Our techniques build upon the constant-factor approximation algorithm for the special case of node-weighted metrics. Specifically, we give a generic reduction to structured instances that resemble but are more general than those arising from node-weighted metrics. For those instances, we then solve Local-Connectivity ATSP, a problem known to be equivalent (in terms of constant-factor approximation) to the asymmetric traveling salesman problem.

  • Authoring and Verifying Human-Robot Interactions

    As social agents, robots designed for human interaction must adhere to human social norms. How can we enable designers, engineers, and roboticists to design robot behaviors that adhere to human social norms and do not result in interaction breakdowns? In this paper, we use automated formal-verification methods to facilitate the encoding of appropriate social norms into the interaction design of social robots and the detection of breakdowns and norm violations in order to prevent them. We have developed an authoring environment that utilizes these methods to provide developers of social-robot applications with feedback at design time and evaluated the benefits of their use in reducing such breakdowns and violations in human-robot interactions. Our evaluation with application developers (N=9) shows that the use of formal-verification methods increases designers’ ability to identify and contextualize social-norm violations. We discuss the implications of our approach for the future development of tools for effective design of social-robot applications.

  • HighLife: Higher-arity Fact Harvesting

    Text-based knowledge extraction methods for populating knowledge bases have focused on binary facts: relationships between two entities. However, in advanced domains such as health, it is often crucial to consider ternary and higher-arity relations. An example is to capture which drug is used for which disease at which dosage (e.g. 2.5 mg/day) for which kinds of patients (e.g., children vs. adults). In this work, we present an approach to harvest higher-arity facts from textual sources. Our method is distantly supervised by seed facts, and uses the fact-pattern duality principle to gather fact candidates with high recall. For high precision, we devise a constraint-based reasoning method to eliminate false candidates. A major novelty is in coping with the difficulty that higher-arity facts are often expressed only partially in texts and strewn across multiple sources. For example, one sentence may refer to a drug, a disease and a group of patients, whereas another sentence talks about the drug, its dosage and the target group without mentioning the disease. Our methods cope well with such partially observed facts, at both pattern-learning and constraint-reasoning stages. Experiments with health-related documents and with news articles demonstrate the viability of our method.

If you want more, you can visit the Jeff Huang’s list.

Tecnología útil que incluya a todos

A veces, cuando nos paramos a ver el mundo, nos damos cuenta de que hay problemas que hoy en día son fáciles de resolver pero que paradógicamente siguen sin estar resueltos. Normalmente, la raiz de que esto sea así es que nadie con los conocimientos adecuados se ha enfrentado al problema. La tecnología es útil cuando resuelve problemas, pero para resolver problemas hay que saber que existen.

Top4ELA

Hace un par de semanas fui invitado por la Fundación Luzón a una especie de hackathon. En él se pretendía conseguir soluciones tecnológicas a los problemas que tienen en su día a día un colectivo con muchas dificultades. Ellos se encargaron de poner a gente con conocimientos de tecnologías dispares enfrente de los problemas que rodean a la ELA (Esclerosis Lateral Amiotrófica).

El evento fue organizado conjuntamente con Samsung España, quienes pusieron todo de su parte para que estuviésemos cómodos y centrados en el trabajo que teníamos por delante. Además nos prestaron sus últimos juguetes para que pudiésemos validar todo lo que planteásemos . Fueron de mucha utilidad todos, desde las cámaras 360, hasta su nuevo asistente virtual Bixby o sus teles con el nuevo sistema operativo Tizen.

La fundación trabaja para que la vida de los pacientes de ELA pueda ser mejor mientras se encuentra el origen de la enfermedad y esperemos que una cura.

La ELA es una enfermedad muy dura porque va destruyendo la capacidad motora de los pacientes mientras su cabeza sigue funcionando a la perfección. ¿Alguna vez habéis tenido la sensación de que vuestro cuerpo se ha dormido pero vuestro cerebro no? ¿De que os enteráis de todo lo que pasa a vuestro alrededor pero no tenéis modo de reaccionar? Imaginad que fuese así constantemente.

En las fases avanzadas de la enfermedad, los pacientes sólo pueden mover los ojos. Nada más.

La realidad de la ELA

Así, lo primero de lo que se encargó la fundación fue de ponernos en contacto con la realidad de la enfermedad. Pero esta no es sólo la de los pacientes, es también la de sus médicos, sus familias o sus cuidadores. Ejemplos de esto fueron Carlos Espada (Socio de Everis y enfermo de ELA a quien podéis ver en una charla a continuación), María Bestue (neuróloga que trabaja con pacientes de ELA), los hijos y la mujer de Francisco Luzón (el fundador de la fundación) o Angélica y Alexandra (dos de las cuidadoras de Carlos).

Los problemas de la ELA

La siguiente parte del trabajo, que gracias a la coordinación de Mario fue muy efectiva, se centro en identificar los problemas de cualquiera de estos actores que creyesemos que podríamos solucionar de un modo sencillo.

Uno de los problemas más graves de esta enfermedad es que convierte a los pacientes en grandes dependientes que necesitan hacer una inversión muy grande para vivir. Además, en la mayoría de los casos, estos dejan de poder realizar los trabajos que realizaban antes. Este es un problema muy grande debido a que dificulta el acceso a soluciones que podrían mitigar otros problemas más “pequeños”. Siempre he creído que las necesidades de todos deben de cubrirse desde las administraciones públicas, aunque mientras esto se consigue es de agradecer el trabajo de fundaciones como esta.

En algunos sitios se está intentando resolver ese gran problema, como en Japón dónde han creado un bar en el que los camareros son robots controlados por gente que sufre algún tipo de parálisis.

En nuestro caso nos quedamos con 4 problemas que creíamos que podrían tener alguna solución en el corto plazo:

  1. El desconocimiento que hay de la enfermedad.
  2. La perdida de identidad de los pacientes.
  3. La dificultad de comunicación de los pacientes (haciendo sólo uso de sus ojos).
  4. La fragmentación de los datos clínicos de los pacientes.
Soluciones

Cada uno de estos problemas, y sus posibles soluciones dan para largo y tendido.

Yo trabajé en el cuarto de estos, de la mano de dos cracks de los datos que ya han hecho público su resumen y análisis: Ana y Josep; y con María Bestue que nos ayudó tremendamente a entender las implicaciones de este problema básico.

En mi caso, voy a dejar para más adelante la creación de un “proyecto tipo” con un análisis más completo del problema y la solución que planteamos, que no sólamente afecta a los pacientes de ELA sino que a cualquiera nos podría resultar de utilidad en un momento dado, como cuando me estuve pegando con Sanitas por conseguir todos mis datos.

Para acabar, como punto y seguido, os dejo con un vídeo de César de La Hora Maker, que creo que resume muy bien el fin de semana además de lograr otros objetivos.

¿Cómo conseguir que una Inteligencia Artificial coloree las fotos del abuelo?

Cuando hablamos  de Inteligencia Artificial, es fácil pensar en sistemas muy complejos y caros. Sin embargo, lo más complejo es crear un modelo para resolver una clase de problemas. Ese modelo, una vez creado, es fácil de aplicar para solucionar un problema concreto usando un poco de imaginación. Hoy veremos como usar un modelo creado por otra persona, para nuestro objetivo: colorear las fotos que tengamos en blanco y negro de nuestros abuelos.

Imagen en blanco y negro coloreada por una Inteligencia Artificial
De una postal antigua, republicada en eldiariomontanes.es

Para la creación de un modelo, hay que saber mucho del ámbito de aplicación, hay que tener una buena base de matemáticas estadísticas y hay que conocer los diferentes algoritmos e invertir un buen tiempo probando cosas distintas. Mucha gente está creando distintos modelos, ya sea para practicar, para investigar o con otros objetivos.

Algunos de estos modelos son liberados por sus creadores, como el que nos ocupa hoy:

DeOldify es un proyecto basado en Deep Learning para colorear y restaurar imágenes antiguas. Su creador (Jason Antic) lo liberó bajo licencia MIT, lo cual nos permitirá hacer casi cualquier cosa con él.

Por tanto, para conseguir nuestro objetivo de hoy, que no es ni más ni menos que colorear las fotos antiguas de nuestros abuelos que tengamos por casa, podremos hacer uso de este proyecto.

Pero ¡ojo! También podríamos usarlo para montar un servicio online de coloreado automático de imágenes antiguas a razón de euro cada una, o para colorear las imágenes captadas por una cámara de visión nocturna (de las baratas que se ven en verde y negro).

¿Qué podemos esperar de esta Inteligencia Artificial?

En mis pruebas, que podéis ver en la foto de cabecera o en el mini-hilo que parte del siguiente twit, podéis ver los resultados con algunas fotos muy distintas. Probablemente, trabajando un poco sobre el modelo para afinar algunos puntos o incluso reentrenándolo (siguiendo los pasos de Jason) con imágenes similares a sobre las cuales queremos aplicar el modelo, podríamos obtener resultados mejores aún.

¿Cómo podemos usar esta Inteligencia Artificial?

Cuando estuve haciendo mis pruebas (hace un mes aprox.), y dado que quería jugar mucho, opté por instalar todo lo necesario en mi máquina. En ese momento no es algo que habría aconsejado porque no era trivial, pero ahora parece que con unas pocas instrucciones lo puedes tener funcionando en cualquier lado. ¡Ojo! No las he probado, pero Jason dice que en su ordenador funciona ;).

git clone https://github.com/jantic/DeOldify.git DeOldify
cd DeOldify
conda env create -f environment.yml

#Then run it with this:

source activate deoldify
jupyter lab

Sin embargo hay un modo mucho más sencillo y es ejecutarlo online partiendo del notebook subido a la plataforma de Google Colab.  Ten en cuenta que es una plataforma que no está pulida del todo y que no siempre funciona bien, por lo que si no te funciona a la primera: no te desesperes.

Los pasos serían:
  1. Visita la url.
  2. Abajo, donde ves las fotos de Lincoln y demás, cambia los links de los wget por links a las fotos que quieras (tienen que estar en internet en una url accesible a cualquiera, por ejemplo puedes compartirlas mediante un enlace de Google Drive). Si lo necesitases podrías copiar más bloques para procesar más fotos: un wget y un vis.plot_transformed_image por imagen.
  3. Ejecuta la opción de menú Runtime>Run all.
  4. Cuando el script llegue a la mitad (al bloque de auth.authenticate_user…) te pedirá que sigas un link y copies un código para autenticarte con una cuenta de Google. Esto es porque necesita descargarse los pesos que se han obtenido en los entrenamientos del modelo para que la red neuronal pueda usarlos con las nuevas fotos, cuando te lo instalas en tu equipo es un paso que se puede saltar, pero con este script de Colab es necesario.
  5. Espera a que procese las imágenes.
  6. Comparte conmigo tus resultados ya sea con un comentario, un twit o lo que veas.

Con estos pasos tan sencillos, obtendrás unas imágenes antiguas que antes sólo tenías en blanco y negro, coloreadas por una Inteligencia Artificial. Cuando tu familia te pregunte como lo has hecho, puedes hablarles de Inteligencia Artificial, Deep Learning, etc. o bien puedes usar el comodín de “magia de informático”.

La falacia de la protección de datos

Hablando de protección de datos hay muchas cosas que no funcionan y que podríamos tratar: desde la manipulación para que aceptes cookies, a la delegación de la agencia de protección de datos en las entidades para cumplir o no tras la aparición de la GDPR. Sin embargo, hoy vamos a ver un caso muy concreto y real de como se manejan datos que deberían tener la protección más alta según la “antigua” LOPD. Hoy hablaremos de como se gestionan los datos sanitarios por entidades de nuestro país.

Cuando trabajas en multinacionales, es típico que parte de tu salario sea un seguro médico privado. En mi caso tenía un seguro médico de Sanitas, que decidí mantener cuando dejé de trabajar para aquellas ya que viajo de un lado para otro y es complicado que te atiendan en centros públicos cuando no estás en casa.

Tras un tiempo y ver que no me daban el servicio que en mi opinión cabría esperar, decidí darme de baja. Me pareció importante tener una copia de todas las pruebas e informes de consultas que hubiese tenido con ellos, por si en el futuro la pudiese necesitar, así que haciendo uso del derecho de acceso (pág. 19) me dispuse a consultar a Sanitas y aquí es donde comienza la odisea.

Para empezar, Sanitas no es una única empresa, son varias con lo cual no es trivial saber a quien tienes que preguntar. Para esto yo tiré del contrato, pues el seguro estaba firmado sólo con una empresa (Sanitas S.A. de Seguros).

Les solicité todo lo que indica la guía del ciudadano y estos me remitieron toda esa información, pero mi sorpresa llegó cuando en los datos no encuentro ni un sólo dato médico. Me informan de que ellos sólo se encargan de cobrar y me pasan un listado con las facturaciones indicándome que tengo que remitirme a esas empresas (que en la mayoría de los casos llevan la palabra “Sanitas” en su nombre legal o comercial).

Preocupante que no estuviese ninguno de los informes a los que tenía acceso a traves de su web, pero decidí no pelearme ya que habría que ver de quién es la web y cómo está todo programado para ver quien toca los datos en cada momento y en especial cuando no están cifrados. Iba a ser una pelea muy ardua.

Aunque en ese listado sé que falta alguna (no he ido en ese periodo tanto al médico como para no saber a dónde he ido, presupongo que es debido a que con alguna entidad tienen convenios tales que no precisan facturarse), decido ponerme en contacto con estas haciendo uso del mismo derecho de acceso con el mismo tipo de comunicación:

  • IGUALATORIO MÉDICOQUIRÚRGICO COLEGIAL, S.A. DE SEGUROS
  • IDCQ Hospitales y Sanidad, S.L.U.
  • SANITAS, S.A. DE HOSPITALES
  • SANITAS NUEVOS NEGOCIOS SL
  • DENTAL SANTA MARÍA DE LA CABEZA, S.L.
  • INSTITUTO ANTIASMÁTICO CENTRO ALERGOLÓGICO, SL

Aquí cada uno ha hecho lo que le ha dado la gana. No voy a entrar en qué ha hecho quién, o qué cosas están mal RGPD en mano, pero os plantearé algunas anécdotas para que veais que todo es un chiste de muy mal gusto y que nuestros derechos, aunque muy bonitos en el papel, en la práctica no sirven siempre.

  1. Sólo uno me informa de la finalidad, destinatarios, derechos, etc. El resto sólo me proporcionan la historia (si llega).
  2. Hubo uno que me remitió una nota manuscrita diciendo que no tenía ningún dato mío. Mal, sea mentira o sea verdad.
  3. Dos me mandaron los datos en un cd, que poniéndonos pejigueros podríamos considerar que en 2018 ya no es un medio común y de uso general.
  4. Dos me hicieron personarme para obtener mis datos.
  5. Uno se lió y en lugar de una copia me dió el original, y como son tan cutres que reutilizan material, tengo en mi poder datos de una paciente que pasó consulta hace unos años.
  6. De uno conozco sus sistemas (porque parte los programé yo), y no me proporcionaron todos los datos de los que disponían.

Podría haber quien diga que me ponga en contacto con la agencia de protección de datos para denunciarlo, pero la experiencia (la mía, que otros tendrán otra) me dice que es un movimiento que no sirve de nada. Además que tengo casi todo lo que quería y mucho más de lo que pensaba que obtendría cuando empecé (hace meses).

En resumen. El papel dice que tenemos unos derechos sobre nuestros datos, pero aquí tenemos un claro ejemplo de que no es del todo cierto, una falacia. Las empresas, que aquí son el fuerte mientras los consumidores somos los débiles, hacen lo que quieren esperando que nadie se quiera engarrar y si llega alguno preguntando ni se molestan en intentar hacer las cosas medio bien.

Si eres una empresa, mi consejo: no te desentiendas de la gestión de datos y la privacidad, puede parecer trivial, pero en realidad es vital.

Si eres un cliente, mi consejo: haz uso de tus derechos y solicita siempre una copia de tus datos importantes, les tendrás a buen recaudo y cuantos más lo hagamos más fácil será que se pongan las pilas y estandaricen el procedimiento.

Las 3 leyes de la deontología informática

  1. f. Parte de la ética que trata de los deberes, especialmente de los que rigen una actividad profesional.
  2. f. Conjunto de deberes relacionados con el ejercicio de una determinada profesión.

Recientemente nos hemos topado con noticias que tal vez no llamen mucho la atención de primeras, pero para los que estamos en el “mundillo del metal” (que diría Bonilla) creo que sí lo son. Hemos visto como compañeros tecnólogos se han revelado en las grandes empresas: en Google, en Amazon y ahora en Microsoft; para presionarlas y que dejen de hacer cosas que no les parecen éticas.

La ética es un tema muy subjetivo. He tenido la suerte de poder estudiarla desde pequeñito, lo que me ha hecho tener la creencia de que no se debe juzgar a nadie sin estar en su pellejo. Puedes ser crítico, puedes opinar distinto, incluso puedes ser radical y oponerte de manera activa a lo que sea, pero no hay una distinción absoluta entre el bien y el mal y por lo tanto las circunstancias de cada uno van a afectar mucho a su toma de decisiones.

Supongo que muchos hemos vivido algún caso en el que se nos planteaba una cuestión ética, que normalmente pasa por “hacer lo que me mandan o hacer lo que está bien”.

Mi caso (más grave) ya lo conté en Twitter hace unos meses, a raíz del “amago” (que me alegro enormemente de que finalmente no se materializase) de extradición de Falciani:

En resumen, me pidieron que ocultase unos datos de una empresa (pública) porque le iban a hacer una auditoría. Me negué y un compañero lo hizo. No estoy de acuerdo con las acciones de mi jefe por aquel entonces ni del compañero que las ejecutó, pero no les juzgaré a ellos pues sólo estoy en situación de juzgarme a mi.

Creo firmemente que debemos ser cuidadosos con lo que hacemos y que debemos actuar siempre en conciencia de lo que creemos que está bien. Nuestras acciones tienen efectos y hoy en día, la informática otorga mucha capacidad a los que la controlan. Además, la gente que trabajamos en tecnología tenemos la suerte de que hoy por hoy, podemos elegir nuestro trabajo pues la demanda de profesionales es altísima. Todo esto nos da un gran poder y como todos los amantes de Spiderman saben: un gran poder conlleva una gran responsabilidad.

Pero bueno, hablar del bien y del mal es muy fácil y “gratuito”, es mejor hablar de cosas concretas. Miremos, por ejemplo, el código deontológico de los ingenieros informáticos colegiados en el Colegio Profesional de Ingenieros en Informática de Andalucía. No os miento si os digo que no conozco a ni un sólo informático que no haya incumplido alguna de las normas “básicas” que ahí se establecen. Yo el primero de todos, que quede claro. ¿Y vosotros? ¿Las habéis cumplido todas siempre? ¿A rajatabla? ¿Y la gente que conocéis? Me apostaría una caña a que haciendo memoria alguna ocasión se os ocurre.

Probáblemente, que nadie cumpla dicha deontología quiere decir que lo que esta marca difiere mucho de lo que la mayoría cree que es ético o no y es que, como decía al principio, la ética es un tema muy subjetivo.

Además, aún con sus 8 páginas de normas, creo que la mencionada deontología se deja cosas en el tintero porque por ejemplo no tendría ningún tipo de aplicación en los casos que vimos al principio de Google, Amazon y Microsoft.

Quienes conocemos las 3 leyes de la robótica, sabemos que es mejor tener poca cantidad de normas suficientemente generalistas que nos permitan aplicarlas en cada caso. También es cierto que si habéis leído a Asimov sabréis que surgen excepciones constantemente que provocan que te cuestiones si esas leyes son correctas, pero en la gran mayoría de los casos funcionan adecuadamente.

De cualquier modo, creo que podemos seguir su ejemplo para tener una deontología informática que sea de aplicación en la mayoría de los casos:

  1. No emplees tus conocimientos y habilidades para hacer algo que te parezca que está mal.
  2. Si gracias a tus conocimientos y habilidades puedes hacer algo por cambiar algo que está mal, hazlo.
  3. En cualquier situación que no esté afectada por los puntos 1 y 2 intenta hacer el mejor trabajo que puedas con los recursos a tu alcance.

Creo que siguiendo estas tres “leyes” la evaluación de cada situación se puede simplificar bastante. Los dos primeros son egoístas ya que, aunque ayudarían a que devolvamos a la sociedad un poquito de lo que nos da, también nos ayudarán a dormir mejor por la noche. El último, aunque pueda parecer el más obvio, también hay que tenerlo muy en cuenta para que no se nos olvide hacer siempre el mejor trabajo posible.

¿Cómo lo véis? ¿Estás sí que podéis decir que las habéis cumplido siempre?

¿Cómo conseguir la verdadera web abierta?

La web abierta es algo que preocupa a mucha gente desde hace bastante tiempo. Los gobiernos y grandes corporaciones monopolizan el control sobre la WWW, sobre sus contenidos, sobre sus tecnologías, sobre servicios vitales para su funcionamiento… Hay alertas que nos dicen que vamos camino a una distopía, o que incluso ya estamos en ella. ¿Cómo podemos evitarlo? ¿Cómo podemos conseguir la verdader web abierta?

No me voy a meter en grandes definiciones, ya hay otros que definen lo que és la web abierta de un modo más o menos acertado, pero para marcar un poco la línea decir que la web abierta es que la gente tenga el poder sobre la web, que tengan el control sobre sus propios contenidos para dejar acceder a todo el que ellos quieran.

Hay muchos elementos a tener en cuenta, de cara a la web abierta. Están las tecnologías a emplear, está la posibilidad de buscar la información (las búsquedas), está el acceso al contenido en sí… y son muchos los factores a tener en cuenta en cada uno de estos puntos.

Por ejemplo, el W3C (World Wide Web Consortium) tiene un pequeño wiki sobre “open web platform” en el que especifica algunas tecnologías que son completamente libres, y que sirven de base para tener una web abierta. Son las mínimas, pero no todo el mundo puede saber de todas ellas para controlar su propio contenido.

Puede que parezca un nuevo miedo, el hecho de que preocupe que la gente deje de tener el control. Sin embargo, dándole la vuelta (pasando del miedo de que quiten el control a la gente, al deseo de que lo tenga), ya en los comienzos de la Web su inventor, Tim Berners Lee, insistió mucho (sin éxito) a los desarrolladores de navegadores web de la época con que los navegadores también debían ser herramientas para que los usuarios pudiesen editar documentos, editar la web. Fue ignorado como el típico loco pesado que no sabe lo que dice, porque “¿por qué iban los usuarios querer crear sus propias páginas web? ¿Por qué iban a querer crear contenidos?“.

Respecto a este tema, la semana pasada tuve la suerte de poder (volver a) asistir al Ignite Madrid, y entre otras charlas muy interesantes pude escuchar la de Luis Roig (alias Darum) en la que advertía que “nos han robado Internet”. No haré muchos spoilers pues en breves saldrá la versión en vídeo (gallifante para el primero que lo enlace en los comentarios cuando salga), pero os diré que en 5 minutos hizo un breve e impactante repaso a la historia de la Web, defendió la web abierta y planteó el futuro que viene.

Puede que os preguntéis cuál es ese porqué que debería de haceros mover incómodos en vuestra silla. A fin de cuentas ya podéis publicar lo que queráis en miles de sitios: Facebook, Twitter, Instagram, Snapchat, … y siempre, a las malas, podréis decir lo que queráis en todos esos grupos de WhatsApp.

Voy a delegar en mi exsocio y amigo, Juan, que es un fiel defensor de la web abierta y que ya explicó en la WordCamp Madrid de 2017 “¿por qué defender la web abierta?”.




Justo esta semana, me ha llegado uno de los motivos de preocupación: hace años me autoedité un libro (#yuzzsfo Descubriendo Silicon Valley) y lo publiqué en Bubok para que el que quisiera pudiese descargárselo o tener una edición impresa (que me alegro de que nadie comprase, realmente). Esta semana me dieron el aviso de que para descargar el libro ahora hay que “pagar” dando una dirección de email a cambio. Acto seguido lo descargué, lo subí a un repositorio de archivos “propio” (Google Drive), y cree un enlace de bit.ly (por medir y saber cuantas descargas tengo que sumar a las 768 que tiene en Bubok).

Así que “ya está”, tomé el control de mis contenidos y puse mi granito de arena para la web abierta… ¿seguro?

Hay mucha gente que me dirá que esto no es ningún ejemplo de web abierta. He puesto mi archivo en manos de un gigante al que le importo cero (Google), y he direccionado el tráfico a él a través de un tercero que podría cambiar el destino de la navegación de los usuarios-consumidores sin yo enterarme.

Entonces, ¿cómo es la verdadera web abierta?

El tener tu propia página puede ser web abierta. Pero por ejemplo, esta página que leéis está alojada y mantenida por el mencionado Juan por lo que yo no tengo un control total, ya que yo no tengo acceso a su proveedor de hosting. Él tampoco tiene un control total, puesto que su proveedor de hosting puede cortarle el acceso en cualquier momento.

Podría montarme una granja de servidores en casa como tiene mi amigo Inda, pero ¿bastaría con esto? Mi proveedor de Internet podría cortarme la línea, o el ayuntamiento decidir que ya no quiere que pasen cables de fibra por sus calles. Podría alguien manipular los servidores de DNS (que es el eslabón más débil de toda la arquitectura de la web, aunque eso es otra historia que deberá ser contada en otro momento) y evitar que se pudiese acceder a mi contenido más que por IP. O aún teniendo yo todo el control de mis cosas, podría ser que por el lado de los usuarios-consumidores les aplicasen restricciones similares que les impidiese llegar a mis contenidos ¿y entonces de qué serviría que yo tuviese el control sobre ellos?

La verdadera web abierta es una utopía (EMHO) que, a día de hoy, como tal es imposible alcanzar. Igual que en el trabajo en el que delegamos responsabilidades en compañeros o en la vida en la que delegamos decisiones en gobiernos, estamos obligados a delegar parte del control sobre la Web.

Debemos elegir con sabiduría que publicamos en Facebook y que en nuestra propia web. Debemos elegir si el servicio X me provee extras suficientes y me da una confianza tal como para que tenga sentido ponerme en sus manos.

Ahora bien, como con los compañeros o los gobiernos, en todo momento deberemos estar atentos a cualquier alerta para tomar medidas si hay un cambio que modifique nuestra confianza.