Se funda el sindicato de desarrolladores Android

Logo Sindicato Desarrolladores Android"Si no hay solución nos cambiamos de plataforma", ese es el grito de guerra del recien formado Sindicato de Desarrolladores Android. El pliego de reclamos es el siguiente:

  • Renegociación de la comisión del 32% que cobra Google por cada aplicación vendida a través del Android Market.
  • Solucionar el problema de la visibilidad de las aplicaciones, que perjudica mucho a los pequeños desarrolladores, que a lo sumo pueden ver listadas sus aplicaciones en Most Recent por un minuto.
  • Un registro público de los errores (bugs) de la plataforma. A diferencia de la creencia popular el Android Market en sí mismo es un programa propietario del cual no hay una auditoría de su seguridad o trato justo a todas las aplicaciones.
  • Más opciones de pago en el Android Market. En el principio sólo había la posibilidad de pagar con Checkout, esto ha cambiado un poco, pero hay opciones de pago desde el escritorio o políticas de pago como "Paga lo que quieras" que no están soportadas.
  • Mejor comunicación y forma de contactar al departamento de Ingeniería. La comunicación entre el Android Market y los desarrolladores es casi nula, el sindicato dice que Google aplica cambios sin previamente comunicarlos a los desarrolladores y luego de un cambio en el API, algunas aplicaciones dejan de operar como lo hacían.
  • Transparencia en los algoritmos. Como el Android Market es un programa de código cerrado, nadie sabe como este se comporta y por lo tanto la sospecha existe de que puede haber favoritismos. Por ejemplo algunas aplicaciones que entran al mercado son listados en "Most Recent", pero otras que entraron casi en el mismo intervalo de tiempo nunca fueron listadas.

Las demandas justas por cierto revelan por un lado el estado del Android Market, muy lejos de ser el paraíso de la libertad que Google pregona a los cuatro vientos. Pero por otro lado revela el alto grado de apertura de Google a la crítica, no me imagino lo que le haría Apple a los desarrolladores que se asocien en un sindicato de desarrolladores de iOS que busquen obtener similares derechos.

Uno de los miembros fundadores del Sindicato de Desarrolladores Android, Rich de New Freedom Apps ha escrito un post en el blog del sindicato titulado "My Story – Rapid download!" en el cual básicamente pone en el contexto los puntos que el sindicato está reclamando actualmente.

Instalando Gingerbread (2.3.3) en el Nexus One

Google finalmente ha terminado la preparación de un upgrade de Gingerbread (2.3) para el Nexus One y el Nexus S, en teoría en el transcurso de las próximas semanas esta actualización debería de aparecer en todos los teléfonos, pero el día miercoles pasado en el popular forum de hackers de móviles xda-developers, las imágenes oficiales se filtraron y desde ese momento un gran número de entusiastas comenzaron a probarlas. Obviamente como no soy de los más atrevidos y necesito mi celular funcionando sin problemas para poder recibir alertas de mi sistema de monitorización esperé hasta que un número aceptable de personas confirmaran que funcionaba sin problemas, es así como el día el viernes en la noche me decidí ha hacer el upgrade de mi Nexus One. Afortunadamente todo salió muy bien y ahora tengo mi Nexus One corriendo Android 2.3.3.

El tutorial que seguí fue el del blog Redmond Pie, que aunque está basado en otro que apareció primero en blog BlogsDNA presenta los pasos de una manera más clara a mi manera de ver. Un detalle importante para aquellos que hayan rooteado sus Nexus One en la version 2.2.2 o anteriores, si hacen el upgrade descrito aquí, el celular vuelve a su estado pre-rooted y el agujero anterior que permitía rootear el celular ahora ha sido reparado, sin embargo está en camino un nuevo hack llamado Gingerbreak que permitiría rootear el celular.

Aquí los pasos para aplicar el upgrade al Nexus One:

  1. Aseguresé de que tiene instalado Android 2.2.2 (FRG83G), si no tiene está versión por favor primero actualicé.
  2. Descarge la actualización oficial a Android 2.3.3 (Gingerbread) desde aquí a su PC (Windows/Mac/Linux).
  3. Renombre el archivo a "update.zip" (ésto es importante, si no se renombra no se producirá la actualización).
  4. Conecte el cable USB que viene con el Nexus One a su PC y siga el procedimiento regular para tener acceso a la tarjeta SD.
  5. Copie el archivo "update.zip" al directorio raíz de su tarjeta SD (es el lugar a donde copia la música).
  6. Desmonte la tarjeta SD del Nexus One de su PC y desconecte el cable USB.
  7. Apague su Nexus One.
  8. Ahora presione el trackball del Nexus One y mientras lo tiene presionado encienda el celular. No deje de presionar el trackball hasta que vea que el celular esta booteando.
  9. Ahora está en el BOOTLOADER, use los controles de volumen para mover el cursor hasta la opción RECOVERY y presione el botón de encendido (Power) para seleccionarlo.
  10. Ahora verá una imagen en medio de su pantalla de un triágulo con un signo de exclamación y un robotito verde al lado.
  11. Presione ahora el botón de encendido (Power) y mientras lo hace, presione el botón de subir el volumen.
  12. En este momento verá el menú de recuperación de Android, por favor usando el trackball vaya a la opción "Apply sdcard:update.zip" y cuando esté sobre ella presione el trackball.
  13. El celular iniciará el proceso de upgrade el sistema operativo, por favor no apague el celular o intente hacer nada más hasta que el celular vuelva por sí mismo al modo de operación normal, momento en el cuál ya tendrá Android 2.3.3 corriendo en su Nexus One.

Aquí unas capturas de pantalla de Gingerbread en mi Nexus One (a tamaño completo 480×800):

Android 2.3.3

 

Android 2.3.3 Home Screen

 

Android 2.3.3 Main Menu

 

Android 2.3.3 Applications Manager

 

Steve Jobs es mitad musulman

El día de hoy encontré un interesante artículo de James Altucher, en su blog The Altucher Confidential, en el cual da cuenta de 10 hechos de la vida de Steve Jobs que la gran mayoría desconoce o prefiere ignorar, entre ellos el que Steve Jobs es hijo biológico de un inmigrate sirio musulmán o que estafó a su amigo Steve Wozniak $2200.

Bueno para aquellos intrigados en conocer estos 10 hechos que pintan de cuerpo entero la personalidad de uno de los más grandes vendedores del siglo XX (en lo personal no lo veo como un visionario), aquí la lista:

 

  1. Es hermano biológico de la novelista americana Mona Simpson.
  2. Su padre fue un profesor de ciencias políticas de origen sirio-musulmán de nombre Abdulfattah Jandali.
  3. Diseño el prototipo de "Breakout", aunque Altucher dice que Jobs diseño el juego, en realidad el juego ya existía y lo que le fue asignado fue hacerlo más eficiente, la forma como lo hizo Jobs fue prometerle a su amigo Steve Wozniak $350.
  4. Negó la paternidad de su primera hija Lisa Brennan-Jobs.
  5. Él es un pescetarianista, suena a un culto prohibido, pero en realidad hace referencia a que sólo come carne de pescado en adición a una dieta básicamente vegetariana.
  6. No dona dinero a la caridad, en un principio el pretexto era que la empresa no era rentable, ahora que lo es, simple y llanamente ignora el asunto de donar para causas sociales, a diferencia de otros magnates de Silicon Valley como Gates, Page o Brim.
  7. Él cobró un bono de $5000 por completar el juego "Breakout" en el tiempo ofrecido y reduciendo el número de chips necesarios, cuya existencia ocultó a su amigo Wozniak a quien sólo le entregó $350.
  8. Es un budista zen practicante, a un punto tal que fue su gurú, un monje zen, quien lo casó con su actual esposa Laurene Powell.
  9. No tiene educación superior, a pesar del esfuerzo de sus padres adoptivos de enviarlo a la universidad, él renunció tras el primer semestre.
  10. Jobs usó drogas (LSD) en su juventud, según propia confesión. Se supone que ya ha superado esa adicción. El uso de drogas psicodélicas y la difícil infancia puede haber influenciado para que actúe de una manera tan poco ética con las personas más próximas a él.

Como dice Altucher, no hagamos juicios morales, pero es conveniente tener presente estos hechos cuando hagamos una valoración de la vida de Jobs y evaluemos que ha hecho él exactamente, por ejemplo cosas que están claras es que "Breakout" y el Apple I y II son obra de Steve Wozniak, el Mac original es creación de Jef Raskin y Jon Rubinstein fue el ingeniero que dirigió el equipo de Apple que desarrollo el iPod.

Lo irónico es que otros grandes multimillonarios que han construido cosas con sus propias manos, al menos al inicio, como Bill Gates que programó el primer BASIC para el Altair, o Mark Zuckerberg que creo sólo la primera versión de Facebook, no son considerados tan "creativos" como Jobs.

No puedo decir que no tengo prejuicios, todos los tenemos. Pero mi moral cristiana occidental que valora el hecho de hacer las cosas por uno mismo, me impide dar crédito creativo al que sostiene el látigo. Si el que paga al artista es el dueño de la creación, entonces los frescos de la bóveda de la Capilla Sixtina no son de Miguel Ángel sino de Julio II.

 

 

Midiendo la performance de un website

Hace tiempo que no escribía y ha sido principalmente más por falta de tiempo que por desánimo o carencia de temas. El mundo al parecer se vuelve más interesante cada día y resulta muy difícil aburrirse o pensar que un día se parece al siguiente. En parte por eso también no he escrito, por que cualquier cosa que comente a la vuelta de un par de días estaría completamente desactualizado.

Explicada ya la ausencia de posts de las últimas semanas entraré en materia sobre como poder evaluar, que tan bien o mal se comporta nuestro website. Existen dos tipos de herramientas que podemos usar, aquellas que debemos ejecutar desde nuestra PC o aquellas que están hosteadas como servicios en línea. Comencemos por las primeras.

Yahoo! YSlow plugin

Es un plugin de Firefox que extiende las funcionalidades de Firebug, que permite analizar las páginas web y recomienda formas de mejorar la perfomance basado en un conjunto de reglas propuestas por el mismo Yahoo! para acelerar la velocidad de carga de un website (detalles aquí). Lo he probado tanto en Linux como en Windows y funciona bastante bien.

Google PageSpeed

Éste es otro plugin de Firefox que extiende las funcionalidades de Firebug, forma parte de la familia "Page Speed" de Google que incluye un módulo para Apache 2 llamado mod_pagespeed que permite optimización al vuelo sin necesidad de modificar el código HTML de las páginas. El plugin de Firefox que he probado tanto en Windows como en Linux funciona muy bien y ofrece casi el mismo tipo de información que YSlow, por lo tanto bastaría con instalar uno. Ya depende de las preferencias personales.

HTTP Server Benchmarking Tool

Es una herramienta Open Source desarrollada por HP para medir la perfomance de servidores web. El enfoque de httperf no está en la aplicación de una medida de desempeño en particular, sino en proporcionar una herramienta robusta, de alto rendimiento que facilite la construcción de medidas de desempeño de micro y macro nivel. Las tres características distintivas de httperf son su robustez, que incluye la capacidad de generar y sostener la stress test del servidor, soporte para los protocolos SSL y HTTP/1.1, y su extensibilidad para poder ser integrado con los nuevos generadores de carga de trabajo y medidas de desempeño.

Finalmente para aquellos que están amarrados a la plataforma Internet Explorer y Windows, hay una herramienta llamada PageTest que corre como una extensión para IE6 e IE7, según la página del proyecto, desafortunadamente no lo he probado. Ahora veamos las herramientas ofrecidas como un servicio web.

Pingdom

Éste es un servicio que nos permite medir el tiempo de carga de una página web, además de indicarnos que parte de la página demora más de lo usual en cargar. El resultado que muestra es un diagrama que nos indica una escala de tiempo contra cada uno de los elementos de una página web (imagenes, CSS, JavaScript, Flash, iFrames, etc.), al simular como éstos son cargados por un navegador. He encontrado que esta herramienta es bastante útil en lo personal, ya que me ha ayudado a indentificar y resolver algunos de los puntos débiles de este blog.

Load Impact

Éste es un servicio que nos permite medir el impacto de la carga (número de visitas) sobre la forma cómo reacciona nuestro website, en el caso ideal el tiempo de carga apenas debe de cambiar con la carga, aunque es aceptable incluso que haya una leve pendiente entre el tiempo de carga y el número de conexiones. Sin embargo este servicio sigue el modelo freemium, es decir la funcionalidad básica (prueba el website contra 10, 20, 30, 40 y 50 conexiones simultáneas) es gratuito, pero si se desea acceso a más detalle en los reportes y sobre todo a muchas más conexiones simultáneas para probar la resistencia del website a un repentino pico en el número de visitas, se debe de pagar. Los precios oscilan entre los $9 diarios por el servicio llamado BASIC a los $99 diarios por el servicio llamado ADVANCED.

El problema del azar

En los días pasados no he tenido el tiempo suficiente para escibir, a pesar de que he encontrado infinidad de temas interesates sobre los que comentar. Es más había pensado escribir un extenso post detallando la gran cantidad de señales que indican un inminente cambio de dirección en los mercados. Pero en parte me parece que ha sido mejor así, he tenido tiempo de encontrar cosas mucho más interesantes aún.

La primera de esas cosas ha sido el video de una conferencia de Nassim Taleb en FORA.tv, sobre la impredictibilidad de los eventos importantes y la humana necesidad de explicar los eventos luego de que estos ocurren. Como consecuencia de ver ese video y de no escribir sobre cosas que sé, sino pensar sobre las implicaciones del mismo y sobre la importacia de las cosas que no sé, es que para clarificar mis ideas comienzo a escribir el presente post.

Una de las críticas más importantes que hace Taleb al "establishment" de la ciencia es que en lugar de almacenar "hechos" lo que hace es almacenar "teorías", que no son más que visiones simplificadas y resumidas de la realidad, obtenidas la mayor parte de las veces a través de la "inducción". O para ser más especifíco, de la extrapolación de una regla basado en un conjunto finito de datos, de los cuales se han extraído convenientemente los valores extremos que pudieran hacer difícil la formulación de dicha regla.

El problema básico como explica Nassim en una entrevista dada a Charlie Rose, en agosto del 2007, es que psicológicamente los humanos no estamos preparados para lidiar con la complejidad del mundo que nos rodea. Además propone que a diferencia de como nos vemos a nosotros mismos como humanos, estamos hechos por selección natural para "hacer cosas" y no para "entender cosas". Sin embargo debido a que tenemos un profundo temor por la incertidumbre hemos invertido la forma natural en que debemos operar, por ello hemos creado este conjunto de "conocimientos" que luego tratamos de "aplicar".

Contradictoriamente, la idea que nos propone Nassim, es obtenida por "inducción" también. Pero eso no le resta validez, por el contrario es como un momento de inspiración, de esos que nos han permitido pasar de un nivel a otro. Básicamente la idea que nos propone Nassim tiene consecuencias en un mundo de Exabytes.

Dejenme explicarles mi conclusión, en el mundo pre-digital o el mundo de la escasez, almacenar y transmitir información a lo largo del tiempo era costoso. Por lo tanto con la finalidad de ahorrar recursos, sólo almacenábamos y transmitíamos de una generación a otra aquellos que era "relevante", mejor dicho sólo se almacenaba y transmitían los "casos de éxito", aunque hubieran miles de millones de "casos de fracaso", por simple economía del mundo pre-digital, todos los errores se olvidaban por pura eficiencia. Nuestros cerebros operan de esa manera también, ya que somos criatura analógicas.

Sin embargo nos encontramos ahora al principio de la era digital, la escasez de medios para almacenar y transmtir información es cosa del pasado, lo irrelevante, lo cotidiano puede ahora ser almacenado y compartido con el mundo entero si queremos. Una prueba de ello son las redes sociales que nos ofrecen petabytes de "irrelevancia".

Por favor,  no me tomen a mal, uso el término "irrelevancia" no en un sentido despectivo, sino en un sentido descriptivo del impacto que tiene en la sociedad en su conjunto esta información. Por ejemplo el día de mañana el Sr. Juan Pérez puede decidir subir fotos de la vecina en ropa interior a Facebook, y esto tan sólo afectará a lo mucho la vida de un puñado de personas. En contraste la famosa fórmula de Einstein E=mc2 es relevante porque afectó y afecta la vida de millones.

Nassim nos habla de dos dominios "Mediocristán" y "Extremistán", el primero dominado por la ley de los grandes números, el segundo dominado por las excepciones, describiendolo como el dominio en el cual un cambio en una pequeña parte del conjunto, produce un gran impacto en el conjunto. Bajo esa premisa Nassim dice que somos buenos haciendo predicciones en "Mediocristán", pero al querer extender esos modelos a "Extremistán", fallamos terriblemente.

Me parece que Nassim está absolutamente en lo correcto con respecto a eso y muestra a los científicos sociales (especialmente, aunque también refleja a la comunidad científica en general) como aquella persona buscando algo cerca de un poste de alumbrado público y al cuál un amigo se le acerca preguntándole: "¿Se te ha perdido algo?". A lo cual el sujeto que estaba buscando responde que busca su billetera, entonces el amigo pregunta: "¿Dónde se te cayó?". Entonces el sujeto señala un lugar oscuro más alla del alcance de la luz proporcionada por la lámpara. A lo cuál sorprendido el amigo cuestiona: "Entonces, ¿por qué estas buscando aquí?". El afligido sujeto responde: "Es que aquí hay más luz".

Los ingléses tienen un refrán que refleja lo mismo que la historia anterior: "Para aquel cuya única herramienta es un martillo, todo problema es un clavo". Estamos en la era digital usando herramientas de análisis de la era analógica.

El problema de la dicotomía Mediocristán/Extremistán, no parece tan insoluble si en lugar de continuar extendiendo nuestros modelos analógicos pasamos a modelos digitales. Pero ¿qué es un modelo digital?. Pues bien un modelo digital lo veo como un conjunto de datos en el orden los Exabytes o superior que son analizados estadísticamente en búsqueda de patrones cause/efecto.

Como dice Nassim, la historia de la ciencia y del hombre en general, es la historia del descubrimiento fortuito, de una sucesión de "Cisnes Negros". Hechos difíciles de predecir antes de que ocurrieran, pero que una vez ocurridos cambián completamente el mundo (hay un antes y un después), pero que luego de que pasan tratamos de buscarles una explicación racional y justificar su inevitabilidad.

En una gran población que juega a la lotería, debe haber al menos un ganador. El método científico hasta ahora, al menos para los economístas, consistía en explicar por qué ese ganador había tendido éxito, ignorando el hecho de que millones habían perdido. En un programa de PBS sobre las subprime llamado "Crisis y Credibilidad" uno de los involucrados en la crisis de las subprime dice que si bien es cierto los métodos usados para hacer las evaluaciones de riesgo eran "metodológicamente" correctos, estaban aplicados a un conjunto muy pequeño de datos. La clásica historia de buscar en donde hay luz y no donde está el objeto perdido.

Nuestra memoria es débil y limitada, producto de la selección natural y orientada a resolver problemas inmediatos (salir corriendo si vemos un leon). En la era digital la memoria puede crecer tanto como lo deseemos no sólo en capacidad, sino también en tiempo. A más data pongamos en el modelo, más precisas serán las predicciones.

Podemos predecir el clima de mañana o de la próxima semana porque tenemos un conjunto de datos de los últimos 100 años que nos permiten ser precisos respecto a los próximos 5 días. El problema es que usemos esos 100 años de datos para predecir el clima de los próximos 1000 años.

Ahora pongamonos las botas al revés cada vez que deseemos responder una pregunta sobre el futuro, no usemos la data existente para responderla. Hagámonos la pregunta, ¿cuánta data necesito colectar, para responder satisfactoriamente esta pregunta?

Básicamente por limitaciones económicas en el mundo pre-digital debíamos de usar el método inductivo, dado el alto costo del alamacenamiento y transmisión de todos los "hechos". En el mundo digital debemos de ir hacia una metodología deductiva, en la cuál debemos formular un conjunto de de reglas de inferencia que verifiquemos experimentalmente es cierta (el algoritmo, a más simple mucho más fácil de verificar su certeza) y luego aplicarlo a un universo de datos creciente en el tiempo.

La idea anterior no es nueva y tampoco es mía. Google ha tenido el éxito que tiene en el mercado de las búsquedas porque ha aplicado esta simple estrategia. Inventó un algoritmo (muy simple) que le permitía dar un cierto ranking a las páginas basado en una serie de palabras claves y enlaces entrantes. Pero adicionalmente alimentó una gran base datos (el universo de datos disponible) sobre la cual corría su algoritmo. A más grande sea la base de datos de Google, más difícil será derrotarlo y ellos lo saben, de alli el gran esfuerzo de la compañía por mantener esa base datos creciendo contínuamente.

Mi conclusión es que a lo que llamamos azar, no es más que a nuestra incapacidad de entender a la realidad en toda su complejidad. La mejor respuesta a esta sensación de frustación no es volvernos religiosos o aceptarla estóicamente. La mejor respuesta es continuar la recolección, almacenamiento y transmisión de datos a lo largo del tiempo, perfeccionando los algoritmos con los nuevos datos y esperando que los hombres del mañana tengan el suficiente universo de datos disponibles para hacer una proyección más ajustada a la realidad.