martes, 12 de noviembre de 2013

De las buenas ideas a los malos hechos

Hoy comiendo con los compañeros de trabajo en una de esas sesiones más propias de "Big Bang Theory" que de profesionales de IT, comentábamos la dificultad de saber con exactitud que tipo de navegado esta accediendo a nuestra web, por fortuna uno de los comensales recordó este artículo que os os cito.


"Al principio se creó el navegador "NCSA Mosaic", y "Mosaic" se le puso el user-agent "NCSA_Mosaic/2.0 (Windows 3.1)". Mosaic mostraba imágenes junto con el texto, y eso gustaba mucho.

He aquí que luego vino un nuevo navegador web conocido como "Mozilla", al ser la abreviatura de "Asesino de Mosaic" (Mosaic Killer), pero a Mosaic no le hizo mucha gracia, así que el nombre público fue cambiado a "Netscape", y "Netscape" se llamó "Mozilla/1.0 (Windows 3.1)", y este navegador gustaba aún más. "Netscape" soportaba frames, y los frames se hicieron populares entre la gente, pero "Mosaic" no soportaba frames, y así comenzó el sniffing del user-agent y los webmasters enviaban frames a "Mozilla", pero no a otros navegadores, que no soportaban frames.

Y Netscape dijo: "vamos a burlarnos de Microsoft" y dijeron que en Windows los "controladores de dispositivos estaban mal depurados", y Microsoft se enfadó, por lo que Microsoft hizo su propio navegador web, al que llamaron "Internet Explorer" con la esperanza de que fuera un "Asesino de Netscape". "Internet Explorer" soportaba frames, pero como no era "Mozilla", así que los webmasters no le mandaban frames. Microsoft se impacientaba y no quiso esperar a que los webmasters conocieran IE y le empezaran a mandar frames, así que dijo que "Internet Explorer" era "Mozilla compatible" y comenzó a hacerse pasar por "Netscape", cambiando su user-agent a "Mozilla/1.22 (compatible ; MSIE 2.0; Windows 95)". Así fue como Internet Explorer empezó a recibir frames, y todos en Microsoft eran felices, pero los webmasters estaban confusos.

Y Microsoft unió IE al sistema operativo Windows y lo hizo mejor que "Netscape", y así comenzó la primera guerra de los navegadores, que hizo estragos sobre la faz de la tierra. Netscape fue asesinado, y hubo mucho regocijo en Microsoft.

Pero "Netscape" renació como "Mozilla", y a "Mozilla" le pusieron un nuevo motor web llamado "Gecko". Internamente se le llamó "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv: 1.1) Gecko/20020826", Gecko fue el motor de renderizado, y Gecko fue bueno. Más tarde se convirtió en "Mozilla Firefox", llamándose "Mozilla/5.0 (Windows; U; Windows NT 5.1 sv-SE; rv: 1.7.5) Gecko/20041108 Firefox/1.0", y "Firefox" fue muy bueno. Y "Gecko" empezó a multiplicarse, y otros navegadores nacieron utilizando su código, llamándose "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O, en-US; rv: 1.7.2) Gecko/20040825 Camino/0.8.1" uno y "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv: 1.8.1.8) Gecko/20071008 SeaMonkey/1.0" otro, haciendose pasar por "Mozilla", e impulsados por "Gecko".

Y "Gecko" era bueno, e IE no lo era, y el sniffing del navegador renació, y a "Gecko" se le daba buen código web, y a otros navegadores no. Entonces los linuxeros se pusieron muy tristes, porque ellos habían construido "Konqueror", cuyo motor era "KHTML", que pensaban que era tan bueno como "Gecko", pero no era "Gecko", por lo que no se le mandaban buenas páginas, por lo que "Konqueror" empezó a hacerse pasar por "Gecko" para obtener las páginas buenas, y llamó a si mismo "Mozilla/5.0 (compatible; Konqueror/3.2, FreeBSD) (KHTML, like Gecko)" y hubo mucha confusión.

Luego vino Opera y dijo: "nosotros tenemos que permitir a nuestros usuarios a decidir por qué navegador se quieren hacer pasar", y así Opera creó una opción de menú donde seleccionar el user-agent, y a Opera se llamó "Mozilla/4.0 (compatible; MSIE 6.0, Windows NT 5.1) Opera 9.51", o "Mozilla/5.0 (Windows NT 6.0; U; es; rv: 1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51" o "Opera/9.51 (Windows NT 5.1; U; en)" dependiendo de la opción que seleccionara el usuario.

Y Apple construyó "Safari", que utilizaba "KHTML", pero añadía muchas características, así que hizo un fork del proyecto, y lo llamó "WebKit", pero quería las páginas escritas para "KHTML", y así se llamó "Safari Mozilla/5.0 (Macintosh; U; PPC Mac OS X, de -DE) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5", y la cosa empeoró.

Microsoft temía "Firefox" en gran medida, y actualizó "Internet Explorer", llamándolo "Mozilla/4.0 (compatible; MSIE 8.0, Windows NT 6.0)" y renderizaba buen código, pero sólo si los webmasters le pedían que lo hiciera.

Y entonces Google lanzó "Chrome", y "Chrome" utilizaba "WebKit", y fue como "Safari", y quería las páginas creadas para "Safari", por lo que se hizo pasar por "Safari". Y así, "Chrome" utilizaba "WebKit", y se hizo pasar por "Safari", y "WebKit" pretendía ser "KHTML", y "KHTML" pretendía ser "Gecko", y todos los navegadores pretendían ser "Mozilla", y a "Chrome" se llamó "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13".

Y la string para el user-agent del usuario fue un completo desastre, además de inútil, pues todo el mundo pretendía ser como los demás, llenando el mundo de confusión."

Creo que como resumen jocoso de la manera en que una buena idea de programación se prostituye hasta la inutilidad no tiene precio.

Ahora espero que algunas personas comprendan un poco mejor que lo de programas para todos los navegadores tiene más de arte que de ciencia.

viernes, 11 de octubre de 2013

Diferencias entre lo que cuesta y lo que valen las cosas

Cuando comenzamos a desarrollar aplicaciones para móviles, las famosas App, comenzamos como cualquiera que se considera inexperto en una materia, comenzamos a leer manuales de xcode, libros de desarrollos de Apps y unos cientos de páginas web.

Después de esto comenzamos a explicar lo que queríamos hacer a distintos proveedores y para intentar eliminar los sesgos hablamos con grandes empresas, medianas empresas, pequeñas empresas y desarrolladores con bañador y chanclas.

En este punto la sorpresa fue mayúscula ya que para el mismo supuesto desarrollo teníamos presupuestos de 9 meses 750.000 € o 6 semanas 15.000 €. Durante mucho tiempo pensé que no me había explicado bien y que los proveedores no habían comprendido el ámbito del proyecto.

Nada más lejos de la realidad los proveedores habían comprendido perfectamente lo que necesitábamos, el problema estaba en realizar la estimación sin tener ningún conocimiento de lo que se esta estimando.

Me senti como si hubiese estado paseando por una calle de Madrid preguntando a los transeúntes cuanto tardarían en hacer una catedral gótica y cuanto me costaría. Por suerte entre los transeúntes encontré un arquitecto que no solo sabia hacer catedrales góticas sino que ademas las hacia por un precio razonable.

36.000 € ha sido el precio justo por las dos Apps que os presentaba en el post anterior. Después de  9 semanas muy intensas, repito 9 semanas muy intensas no 9 semanas y media, que alguno con más de 40 años sabe de lo que estoy hablando; teníamos 2 apps que cumplían 100% los objetivos.

La moraleja de esta historia es que si no hubiese dedicado tiempo a formarme en un nuevo paradigma tecnológico, y cuando digo tiempo es realmente mucho tiempo, no habría tenido la capacidad para distinguir cual es la diferencia real entre los distintos presupuestos y debería utilizar otros valores para decidir como la confianza en la empresa, la reputación, etc y estas otras razones no son siempre garantia de éxito.

El resto lo puedo resumir en este foto.


668 clientes mantienen la App en Android de un total de 1.468 descargas sin ningún tipo de inversión en publicidad o publicación en redes sociales. Nuestro objetivo inicial eran 100 descargas y una retención del 25% para una App que solo permite consultar y no hace apuestas.