Otro error de programación con efectos desastrosos

Más de una vez he mantenido alguna conversación con un compañero docente de la universidad que defendía que no había que ser excesivamente celosos con la calidad del trabajo de nuestros alumnos, porque nuestros alumnos no eran médicos que pudiesen tener la vida de un paciente “en sus manos” o tampoco eran ingenieros aeronáuticos que pudiesen tener la vida de cientos de personas “en sus manos”. Bueno…

Existen casos documentados de informáticos o programadores que han tenido la vida de algunas personas en sus manos:

  • El Therac-25 es una máquina de radioterapia que debido a un fallo de programación al menos mató a tres personas y causó graves lesiones a otras tantas.
  • El accidente del Airbus A400M Atlas en el año 2015 se debió en parte a problemas con el software. Fallecieron cuatro de los tripulantes.

Todo esto es por la lectura de Schiaparelli se estrelló debido a un fallo de cálculo en el software de a bordo, en la que se comenta que esa sonda se estrelló en Marte debido a problemas con el software:

El problema es que Schiaparelli oscilaba demasiado debajo de su paracaídas y en una de las oscilaciones más extremas los sensores de inclinación las dos IMU se saturaron y durante más de un segundo dieron valores que, una vez suministrados al software de guiado del aterrizador, hicieron que creyera que estaba bajo la superficie de Marte.

No es la primera vez que eso ocurre. En el año 1999, la Mars Climate Orbiter también se estrelló contra Marte porque los ingenieros de software no se pusieron de acuerdo en el empleo de las unidades de medida: unos usaron el sistema métrico internacional, mientras que otros usaron el sistema anglosajón.

La ‘nueva’ selva del desarrollador web…

Hace unos dias un amigo y compañero de trabajo me mando estos dos links:

https://circleci.com/blog/its-the-future/

https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.d7baby1h2

Son dos parodias de dialogos ficticios entre dos desarrolladores hablando de que
tecnología usar para realizar un desarrollo o aplicativo Web. Se hacen largas, pero te dan una idea de como esta la industria del desarrollo web.

Me siento bastante identificado, porque ultimamente han surgido multitud de tecnologías de desarrollo web, algunas son muy buenas ideas, algunas rompen con la forma actual de hacer las cosas, pero otras son ‘raras’, reinventan la rueda o se pasan de rosca.

La mayoria son inestables, de forma que de una versión a otra, suelen cambiar tanto que la compatibilidad hacia atras brilla por su ausencia. Y no se aclaran en decidir que es una clase, un modelo, una ijection, un include o lo que sea…

Algunas vienen esponsorizadas por grandes empresas: la API de los programadores de Facebook, la que usa Google en la intimdad, la preferida de Tweeter, etc.

Muchas de ellas se basan en frameworks o tecnologías que ya existian añadiendo una capa intermedia con la idea de hacer el interfaz más amigable, pero que suelen resultar en un más de lo mismo…pero con una capa en medio.

Otras tantas suponen meter un include de varias decenas (o más) de kbs para acabar usando una funcioncita o dos…matar mosquitos a cañonazos?

La tendencia actual, al parecer es volver a las consolas, el interfaz de comandos, ahora lo que ‘mola’ es instalar cosas a golpe de instrucción desde un prompt, hasta tal punto que he visto como algunos se han instalado en su Windows o Apple un SW que emula una consola de Unix, que permite instalar paquetes ‘Unix-style’ y desde esta ventanita en modo texto sobre un flamante escrtorio gráfico de última generación, lanza comandos al estilo ‘hacker’ para instalar ‘packages’, ‘dependencies’, etc. Raro?

Y lo que me parece más duro, algunas implican usar un dialecto de Javascript que debe ser interpretado o compilado en Javascript ‘de toda la vida’, en cada ejecución o prueba… buf!

Sea como sea, me pierdo entre tanta novedad, nombrecitos, siglas, acrónimos, versiones y dependencias, npms, nodes.js, angular 2.0, RESTful APIs, moment.js, Cygwins, Typescript, JSX y tal.

Bueno, la cosa es adaptarse, y esperar cual de estos nuevos paradigmas se estabiliza, se hace ‘potable’ y se convierte en referencia. Mientras tanto, cada vez que me toca comenzar un nuevo proyecto, tiemblo de pensar que lo que hice anteriormente dificilmente va a ser reutilizable si me cambian la tecnología o la versión…:-(

El mejor artículo sobre caracteres, juegos de caracteres, codificaciones, emojis y todo lo demás

El juego de caracteres es la “peor de las pesadillas” de los informáticos. En cuanto te despistas, el juego de caracteres aparece y te fastidia todo tu sistema.

El artículo You, Me And The Emoji: Character Sets, Encoding And Emoji es de lo mejor que he leído para comprender perfectamente el juego de caracteres.

Es un tema muy largo, pero el tema es muy complejo y requiere una explicación tan larga.

¿Cuál es la diferencia entre la Web e Internet?

Esta pregunta aparece en un FAQ del W3C, ¿Cuál es la diferencia entre la Web e Internet?:

Desde la definición en la Wikipedia: “Internet es un conjunto descentralizado de redes de comunicación interconectadas que utilizan la familia de protocolos estándares TCP/IP”.

De esta forma, Internet se define mediante los estándares TCP/IP.

La Web, por otro lado, se define en Arquitectura de la World Wide Web, Volumen I[ingles] del W3C como sigue: “La World Wide Web (WWW, o simplemente Web) es un espacio de información donde los elementos de interés, denominados como recursos, se identifican a través de identificadores globales llamados Identificadores de Recurso Uniforme (URI).”

Así que la Web se define mediante otras especificaciones. Las tres primeras especificaciones para las tecnologías Web fueron URLs, HTTP y HTML.

¿Para qué aprender HTML, CSS y JS?

Hace unos días recibí un correo con esta pregunta:

Buenos días o buenas tardes Sergio, mi nombre es J.D, soy español viviendo en una ciudad de Mexico, estoy realizando el curso de “Introducción al Desarrollo Web” a través de la pagina Activate, yo llevo muchísimo tiempo en esto de internet, desde que empezaron con los modems de 56kb/s, mi pregunta es la siguiente: ¿No crees que ser hoy en dia desarrollador de paginas web ya esta desfasado o acabado ya que existen muchísimos programas para hacer paginas web sin falta de escribirlas en código (html,css…) ya que estos programas a la vez que la diseñas, se escribe el código el solito?, de ahi mi gran duda sobre desarrolladores web.

Mi respuesta fue la siguiente:

Hola.

¿No crees que ser hoy en día cocinero, o aprender a cocinar para uno mismo, está desfasado? Con toda la comida precocinada que se vende, con los maravillosos microondas que la preparan rápidamente y sin esfuerzo, pulsando un simple botón, todo solito.

El ahorro de tiempo es impresionante y muchas veces es más barato comprar la comida precocinada que comprar los ingredientes por separado.

Y ya puestos, ¿no están desfasadas las casas que se venden con cocina? Teniendo un McDonalds a la vuelta de la esquina, menuda tontería cocinar y comer en tu propia casa.

Un saludo.

Y parece que no le gustó:

No creo que sea esa la manera de contestar a una pregunta con buenos propósitos, simplemente era una duda que tenia pero ya entendí el concepto que usted quiere expresar con su contestación, simplemente quería saber si hay alguna diferencia al escribir el código de la pagina o hacerlo directamente con programas como por ejemplo “dreamweaber” ya que según mi criterio no vi ninguna diferencia que obligara a escribir la pagina en código.

HTML 5.1 publicado

Siguiendo lo estipulado en el Plan 2014 del W3C para el desarrollo de HTML5, el 1 de noviembre se anunció HTML 5.1 IS A W3C RECOMMENDATION:

The Web Platform Working Group has published a W3C Recommendation of HTML 5.1. This specification defines the 5th major version, first minor revision of the core language of the World Wide Web: the Hypertext Markup Language (HTML). In this version, new features continue to be introduced to help Web application authors, new elements continue to be introduced based on research into prevailing authoring practices, and special attention continues to be given to defining clear conformance criteria for user agents in an effort to improve interoperability.

¿Tendrá cosas nuevas para mejorar la accesibilidad web?

El enlace a la nueva versión: HTML 5.1 – W3C Recommendation, 1 November 2016