Category Archives: ensayo

La importancia de los estandares

No, esta vez no voy a hablar de los estándares html. Esta vez voy a hablar de las tecnologías estándar en el mas amplio sentido de la palabra.

Estándar: Adj. Que es lo más habitual o corriente, o que reúne las características comunes a la mayoría.

Si eres un recién egresado de la carrera de ciencias de la computación,  seguramente tu primer trabajo será programación en visual básica, usando una base de datos SQL server en un servidor windows. Tienes suerte. Si, en serio.

dinosaur

Con el tiempo te vas a encontrar con que tienes que dar mantenimiento a cosas como estas:

  • Sistemas con lenguajes de programación que ya no existen en el mercado
  • … cuya ultima versión salió en 1997…
  • … cuyo único IDE es web…
  • … y que solo funciona en redhat 6.2…
  • … y que esta basado en Básica
  • … o peor, en FORTRAN
  • Bases de datos no relacionales…
  • … basados en archivos de texto plano
  • … que no soportan ACID
  • … o por lo menos integridad referencial….
  • … o de perdida atomicidad
  • … ni multithreading

Y tu trabajo será hacer que esos sistemas sigan funcionando. Mis condolencias. Una vez que tu trabajo es mantener un sistema monolítico como estos, tu carrera esta en peligro. La mayor parte del conocimiento y experiencia que obtengas de estos sistemas no te servirá una vez que te vayas a otra empresa. En muchos aspectos tendrás que empezar de cero, y probablemente tendrás que empezar de negativo, ya que estos sistemas te encierran en el pasado, amarrandote a malas practicas y dejándote atrás en una industria en la que el conocimiento es obsoleto en 6 meses.

Y te conviene tener cuidado de no caer en estas malas no solo por ti, sino por tu empresa. Es cuestión de libertad, pero sobre todo de finanzas. El trabajar con sistemas no estándares les puede estar costando mucho dinero:

  1. Estas herramientas por ser tan exóticas, suelen tener pocos especialistas. Debido al soporte limitado conseguir alguien que te pueda resolver un problema complicado, te puede costar muy caro.
  2. Muchas veces es poco mas que imposible hacer una migración a un sistema operativo mas nuevo. Estarás muy expuesto a problemas de seguridad así como a problemas de performance. Inclusive podría ser difícil o imposible migrar de hardware, en caso de contingencia.
  3. Por la naturaleza de este tipo de herramientas es posible que no puedan crecer al ritmo de tu negocio. Talvez hoy tienes 10 usuarios, pero en un futuro podrías tener 1000. Cuando el sistema no puede crecer, lo mas probable es que tu única opción sea aventar dinero al problema, en términos de hardware. Toma en cuenta que la escalabilidad de un problema en términos de hardware no es lineal. Duplicar la capacidad de procesador no necesariamente reduce a la mitad los tiempos de respuesta, aun paralelizandolo como lo explica la ley de Amdahl. Piensa en términos de escalabilidad.
  4. Si el proveedor de estos sistemas es tu único soporte, te encontraras en el problema de “vendor lock in“. Una vez que un sistema de este tipo es vital para tu negocio, tu proveedor te cobrara lo que el quiera sin que tu puedas hacer mucho para evitarlo.
  5. La curva de aprendizaje suele ser muy alta, costándote muchas horas hombre obteniendo un costo-beneficio mucho menor, ya que son conocimientos poco reusables fuera del campo original del problema.

Te sorprendería saber cuantas empresas del top 100 en este país cuentan con problemas similares. Ahora, que hacer para evitar caer en estos problemas?

  1. Para todo sistema a la medida EXIGE el código fuente. Una vez que tu compras un sistema, ese sistema es TUYO, ya no le pertenece a quien lo creo. El código es de quien lo paga.
  2. EXIGE la documentación completa del software que compres, tanto la documentación técnica como la de usuario. (si, se que es de primaria, pero te sorprendería el porcentaje de software no documentado que existe en este país)
  3. Prefiere que el software que compres este basado en software libre o que sea software libre.
  4. EXIGE que tengas completo acceso a los datos generados en dichas aplicaciones. Otra vez, los datos que generes son tuyos, no de tu proveedor. Además dichos datos deben ser fácilmente exportables a formatos estándares.
  5. Prefiere que el software este basado en lenguajes estándares. Te será mas fácil y barato extender tu sistema si esta hecho en PHP, Ruby, C#, ASP.NET o Java, que si esta hecho en MUMPS o en CLIPPER o en Informix.
  6. En caso de que el sistema sea realizado en un lenguaje propietario, EXIGE que el sistema sea extensible con un API publica y documentada en un lenguaje comercial estándar. Java suele ser una buena opción en estos casos.
  7. EXIGE por contrato que el sistema sea soportado en versiones futuras de sistema operativo al menos por una cantidad determinada de años. Este puede ser un punto complicado de negociar, pero si no lo haces corres el riesgo de que tus servidores sigan corriendo Windows Vista por los siglos de los siglos.

No permitas que tu carrera se reduzca a mantener un software monolítico, créeme, no te conviene.
Parafraseando a un clásico,  esto se trata mucho sobre la libertad, pero sobre todo, de dinero.

Guia practica para deshacerte de tus programadores

Tu, como buen hombre de negocios, sabes que para lograr que tu compañia crezca, debes aumentar las ganancias mientrasa disminuyes los gastos. La manera mas rapida y facil es despidiendo gente. Podriamos empezar con Rosita, la recepcionista, pero vamos ella sirve muy buenos cafes y ademas hace la vista mas agradable. El simple hecho de tenerla sentada en la recepcion nos esta generando ganancias con los clientes que vienen exclusivamente a verla a ella.

Mejor empecemos por otro lado. Hay una tribu en tu empresa que se la vivien viendo videos de youtube todo el dia, hablando en un lenguaje extraño, cada vez que les pides algo te dicen que no se puede y a parte de todo cobran carisimo. Viven recluidos en el sotano y talvez por eso no los recuerdas: Los programadores.

Si, yo se que esta es una empresa de tecnologia, pero creeme, vas a estar mejor sin ellos. Y yo te voy a decir como deshacerte de ellos haciendolos renunciar en 6 sencillos pasos.

  1. Bajales el sueldo
    Ganan demasiado por estar sentados todo el dia en su lugar. No veo porque tengan que ganar mas que la gente de R.H. que por lo menos, nos avisan por correo de los cumpleaños de la semana. Bajales el sueldo a la mitad, ni siquiera lo van a notar.
  2. Ponles a un jefe que no sepa de tecnologia, o mejor aun, uno que crea que sabe
    Los programadores suelen ser unos sabelotodos. No soportan que los contradigan. Desesperalos con un jefe que les explique que, por seguridad, todos los passwords deberan tener 40 caracteres, numeros, letras, simbolos y ruidos de ardilla.
    Dilbert-20050910
    click para agrandar
  3. Establece proyectos con limites irreales 
    Pideles un proyecto que combine al menos tres tecnologias diferentes… que tus programadores no conocen. Y que lo desarrollen en un lenguaje… que nunca han trabajado. Ah y mencione que lo necesitas para el lunes?… de la semana pasada?… junto con los otros tres proyectos que eran para antier?

    PHB02
    click para agrandar

  4. Limita las herramientas
    Pideles un proyecto en .NET… pero no les compres una licencia de Visual Studio… Ni un servidor de desarrollo… Ni una computadora. Ellos siempre tienen una laptop o PC de escritorio en su casa. Hazlos que la traigan y asi te ahorraras un buen dinero en licencias y equipo! Matas dos pajaros de un tiro. El proyecto es en PHP o Python? Mejor aun. Windows todavia trae el notepad incluido, verdad?
  5. Haz que trabajen de mas
    Gracias a los proyectos que les asignaste en el punto 3, deberan trabajar un poco mas. Deberan trabajar los sabados y domingos durante los proximos 2 meses. Y de lunes a viernes trabajaran hasta las 11 de la noche. Pero es su trabajo! Para eso les pagas, verdad? Oh y cuando pidan vacaciones o aumentos de sueldo, diles que por ahora no se puede, la compañia esta pasando por momentos dificiles y necesitaras de su apoyo.

    dilbert2007183321004
    click para agrandar

  6. La capacitacion es para los ineptos
    Les pagas para que sepan! Si tu tuvieras que enseñarles lo que tienen que hacer en su trabajo, ellos te tendrian que pagar a ti. No importa que la tecnologia sea completamente nueva, ellos tendria que saberlo ya. Para eso tienen su tiempo libre, no es asi?

Siguiendo estos sencillos pasos, esos flojos que tienes en tu area de sistemas, terminaran yendose por voluntad propia y te ahorraras mucho dinero en sueldos. Ohh y sobre el trabajo que ellos hacian? No te precupes, siempre habra alguien que lo haga por la mitad del precio o menos, su trabajo es tan facil que un mono con una maquina de escribir lo podria hacer.

<Oh Dios… a veces quisiera que fuera broma..>

Desinstalando programadores

Hoy, en una discusion sobre Windows y otras cosas mal hechas, alguien pregunto “¿Y como desinstalamos a los programadores?”288950_programmer_1.jpg

La pregunta me sorprendio un poco (no me la esperaba) y me hizo darme cuenta lo poco valorados que somos en la sociedad. Ya habia hablado un poco de esto, y de como nosotros mismos lo provocamos. Somos vilpendiados y vistos como ciudadanos de segunda clase.

Somos un escuadron invisible pero sumamente poderoso y activo y hemos construido una vasta infraestructura al punto que hoy el mundo funciona con el trabajo de esa gran elite de que son los informaticos.

De que nos perderiamos si no estuviera(mos) ese escuadron de trabajadores realizando tareas para la sociedad? Esta es una pequeña lista

  • Los telefonos celulares serian manuales. Recuerdas la ruedita para marcar?
  • Un iPod seria un sueño
  • No existiria Microsoft Windows (uhmm, esa talvez sea buena :P), ni computadoras que operar.
  • No habria internet, no habria navegadores, no habria email, no habria messenger, no habria comercio electronico
  • Los automoviles funcionarian igual que en 1950.
  • Horno de microondas? Television satelital? Pff!! quien los necesita.
  • Los cheques todavia existirian (Uh? todavia existen? de verdad?)
  • Efectos especiales en peliculas, animacion por computadora? Bah! Los verdaderos actores hacen todo en una escena, sin dobles y en blanco y negro.
  • Juegos por computadora? XBOX? Ja! En mis tiempos atabamos cartones de leche con un lazo y eso era un tren. La diversion nos duraba por dias.
  • Ademas… nada como el sonido de las teclas de una maquina de escribir a las 3 de la mañana

Es solo una pequeña lista. Si escarbamos nos encontraremos las aplicaciones medicas, en contabilidad, simulacion, robotica, telecomunicaciones, uff no terminamos la lista nunca…

No espero un mayor respeto a esta profesion, eso no sucedera en el corto plazo. Tampoco estoy diciendo que solo los programadores hayamos hecho todo esto solos. Solo quiero hacer notar que en la mayoria de la infraestructura de la que depende nuestra vida diaria, estamos ahi. En mayor o menor medida somos participes del desarrollo moderno, somos el pináculo en la evolucion de la creacion de herramientas y automatizacion de procesos.

Y a veces no nos damos cuenta….

El territorio del usuario

El software es una tarea inherentemente compleja. No cualquiera puede hacerla y mucho menos hacerla bien. Por ello los programadores siempre han sido vistos como una especie de magos que con unas palabras mágicas hacen que las cosas funcionen. Eso también nos ha dado un enorme poder de decisión en cuanto al “que”, “como” y “cuando” deben suceder las cosas en el ámbito computacional.

Sin embargo con el paso del tiempo los usuarios se han vuelto mas y mas sofisticados. Especialmente desde el boom del software libre y del web, los usuarios demandan opciones y sobre todo demandan libertad de acción. Y aquí­ es donde muchos de los programadores nos hemos quedado rezagados. No hemos entendido que la computadora no es nuestra. Hay muchos pecados que se han cometido y se siguen cometiendo que lo único que logran es provocar irritación en el usuario. Y como dijo Joel Spolsky en su libro “Diseño de interfaces de usuario para programadores“, si el usuario empieza a tener pequeñas molestias, una tras otra lograran que el usuario deje de usar tu software y terminara odiándote.

Esta es una lista de esas pequeñas molestias que debes pensar dos veces antes de usarlas.

En Web

  1. Ventanas emergentes (Pop-ups y Pop-under)
    Hoy estos especí­menes tienden a desaparecer, pero se niegan a hacerlo. Parafraseando a mi maestra de ingles: “Repeat after me:” NO HAY MOTIVO PARA USAR POPUPS. Al usar esta técnica esta obligando al usuario a realizar algo que no necesariamente desea. “Quiero que el usuario vea esta otra pagina pero quiero que se quede en la mí­a” no es buena razón Si el usuario quiere quedarse en tu pagina, lo hará. Es SU decisión, no la tuya.

  2. Tamaño de fuentes.
    A esta pequeña bestia se le presta muy poca atención, pero cuando la necesitas es molesta como el demonio. Tu pagina web debe permitir al usuario elegir en que tamaño de fuente quiere verla. Hay veces que cuentas con un monitor pequeño y deseas hacerla mas pequeña para tener mas espacio en la pantalla o también es posible que tu usuario quiera verlo en fuente grande porque tiene problemas de visión Déjalo que decida. (Tip, no uses tamaño de fuente en pixeles)

  3. Sonidos y ví­deos automáticos
    Los sonidos y videos son obtrusivos por definición. Siempre da opción al usuario de elegir cuando quiere y puede ver en el video.

  4. Animaciones flash de entrada
    Las animaciones de entrada están en ví­as de extinción, pero se niegan a morir. No agregan ningún valor al sitio y lo primero que hará el usuario es ver como se la salta. Si tu sitio tiene una animación de introducción, es una buena señal de que aun estas viviendo en el siglo pasado.

  5. Flash en general
    Flash es muy útil para ciertas cosas. Pero su sobre uso también es molesto. Ademas, rompen con el paradigma tí­pico del web. En especial, los usuarios de Internet están muy acostumbrados al atrás y adelante. Si tu sitio es completamente flash, solo lograras hacer mas difí­cil la navegación Ademas es mucho mas difí­cil crear estadí­sticas confiables del uso de tu sitio.

  6. Registro obligatorio
    No me obligues a registrarme, darte mi nombre, correo electrónico y nombre de perro para poder acceder a tu sitio. A menos que sea un sistema de pago que requiera identificarme, no hay razón para solicitar un registro, o donde se guarda un perfil especifico del usuario, no hay razón para el registro. Y si tienes que hacerlo, toma de ejemplo a reddit. Te piden un usuario y una contraseña y eso es todo. Ademas solo te solicitan identificarte o registrarte cuando la acción que estas realizando lo requiere.

  7. Selección de opciones innecesarias por default
    Procura no seleccionar opciones que el usuario no quiere. Un correcto conjunto de “defaults” uno de los principios básicos de usabilidad. Un claro ejemplo es, al momento del registro predefinir una opción tipo “Quiero que me mandes 500 correos que no me interesan al mes”. Eví­talo.

En Escritorio

  1. Instalación de programas no solicitados (bundling)
    Los principales culpables de esto, después del spyware, son los productos de Real. Es prácticamente imposible instalar el reproductor solamente, si lo quieres, te instala 20 iconitos de patrocinadores que no necesitas. Un culpable estruendoso es Adobe. Y no hablo del sobrecargado Adobe Acrobat + Yahoo Toolbar. Han instalado algún producto de la suite CS3 de Adobe? Después de instalar Dreamweaver CS3, me instalo (sin preguntarme) 5 programas mas que no solicite, ni pedí­, ni compre. Termine regresando a la versión anterior. Que pedazo de porquerí­a

  2. Adueñarse de la bandeja de iconos
    Hay muy pocas razones para agregar un icono a la barra de notificación Y sin embargo, todos lo hacen. Desde realplayer hasta openoffice. Al final terminas con una barra de notificación mayor a la barra de tareas. La barra de iconos no les pertenece.

  3. Adueñarse del inicio del sistema
    Lo mismo que en el punto anterior. Conforme pasa el tiempo tu maquina se va haciendo lenta por los programas que se van adueñando del menú inicio. No seas un culpable mas.

  4. Adueñarse del menú contextual
    Si eres un power user, tu menú contextual puede llenarse rápidamente. Muchos programas ni siquiera te dan la opción de evitarlo.

  5. Hacer difí­cil la desinstalación
    Cuando el usuario quiere desinstalar, no le preguntes “porque quieres desinstalarlo?” “Estas seguro?” “De verdad?”. Déjalo que se vaya. Es una batalla perdida y solo lograras irritar al usuario.

  6. Abuso de diálogos modales.
    En la medida de lo posible has tus diálogos no modales. El ejemplo tí­pico es (ha!) Notepad. Intenta buscar una frase y copiar el texto buscado sin cerrar el dialogo “buscar”. Ahora compáralo con el Ctrl + F de firefox. Cual te gusta mas? :). Y ya no me hagan hablar del dialogo de las actualizaciones automaticas que solicita reiniciar, me vuelve loco.

  7. DRM y similares
    Por ultimo y no por eso menos importante. La representación de todos los males: el DRM. El concepto básico del DRM es que lo que ya compraste (tu computadora, tu software, tu música, tus videos) no te pertenece, sino que solamente te es prestado por un tiempo limitado y bajo las normas y reglas que el productor decida. Es ya tedioso decir en cuantos niveles esto es una estupidez y es incorrecto.

Concluyendo: Lo que el usuario tiene en su computadora, le pertenece solo a el. No tienes ningún derecho de adueñarte de ningún espacio que le pertenezca a el. Ninguno. Seguro no te gustarí­a que pusiera una mesa, sillas y sombrilla en tu patio trasero. Si eres programador, trata de pensar como usuario. El usuario no es tu enemigo, es quien te da de comer, tratalo con respeto. Y si eres usuario, exige tus derechos. Hazte escuchar. Y si no te escuchan, también estas en tu derecho de no volver a dar tu dinero a aquellos a quienes no les interesas.

Fuga de cerebros

Cuando los noticieros tradicionales se acuerdan del area de informatica, un tema recurrente es la llamada “fuga de cerebros”. Usualmente el tema sale a colacion porque algun mexicano triunfa en el exterior y es reconocido mundialmente. Entonces es cuando empieza a letania de que el gobierno no impulsa la investigacion y desarrollo, y de ahi continua al deporte favorito de la prensa mexicana, la queja.

Siempre es facil echarle la culpa al gobierno, porque el no nos escucha, pero tampoco nos responde. Es tan inocuo como darle de golpes a una almohada.

Sin embargo, en este caso creo que la culpa no es totalmente del gobierno. Es cierto que este no invierte lo necesario en el area academica, pero creo que los principales culpables de este problema son dos: Sector privado y nosotros los profesionales.

Hoy muchas empresas se quejan de que no hay personal cualificado y de que el existente, es caro.
De verdad esperaban que fuera diferente? Y por otro lado… ¿es caro el personal de IT?

Hice una busqueda rapida de la palabra “programador” en occ y mirando las primeras ofertas que mostraban sueldos, estos oscilaban entre los 14 mil pesos (aprox. 1300 dolares) y los… 6000 pesos!!! (550 dolares) mensuales. Eso nos da al año un sueldo de entre 15 mil y 7 mil dolares al año. Como punto de comparacion, el sueldo de un programador promedio (tirandole a mediocre) en estados unidos es de aproximadamente 75mil dolares al año, lo que seria un sueldo de aproximadamente 68mil pesos al mes! Un buen programador gana alrededor de 120mil – 150 mil al año (120~ mil pesos al mes). Y trabajando como independiente (contractor) puedes ganar hasta 200 mil dolares ( 180 mil pesos ) al mes.

graph-2.png

Realmente la industria cree que puede retener a los mejores talentos cuando en el extranjero puedes ganar en un mes lo que aqui no podrias ganar en un año?

Y ya ni hablar de las condiciones de trabajo. Si no saben de que les hablo, chequen mi post sobre “como es trabajar en google“. Cierto, Google solo hay uno, pero ni soñar encontrar algo remotamente parecido aqui en mexico. Aqui la productividad esta asociado a llegar temprano, salir tarde, y lo demas no importa.

Ademas, hoy la industria en mexico no CREA tecnologia. La mayor cantidad de las empresas en mexico se dedica a dar soporte o a la creacion de aplicaciones CRUD. Y eso, no es crear tecnologia. A nadie le atrae estar creando formularios para crear guardar inventarios por toda la vida. Y ciertamente es lo que menos le interesa al to 5% de los profesionales de tecnologia.

Si bien la industria no parece tener prisa en corregirlo, nosotros tampoco ponemos mucho de nuestra parte.
En primer lugar, regalamos nuestro trabajo. Por ser el primo del vecino de un amigo, cobramos mas barato o de plano no lo hacemos.
En segundo lugar no nos autocapacitamos. Las empresas en mexico invierten poco en capacitacion, pero eso no nos tiene porque atar de manos. Los recursos estan disponibles en internet para quien quiera acceder a ellos. Quien se va a quedar sin esos conocimientos somos nosotros, no la empresa. Y en esta industra, el quedarte atrasado en conocimientos puede costarte caro en un futuro. Aunque sobre esto ya escribi antes un poco mas a fondo.

Hay mucho por hacer, aunque si no aceptamos nuestros errores, los Migueles de Icaza seguiran yendose a donde el futuro les pinte mejor. Yo no los culpo.

Si ser programador fuera como ser controlador de trafico aereo

No suelo escribir poner en este blog cosas que no sean mias, pero esta vale la pena. Esto viene a cuento porque a veces los que estamos en el area nos quejamos de las condiciones de trabajo y de que dificil es ser programador y no es para tanto. The codist escribio al respecto un articulo, el cual yo traduzco, el cual cuenta como seria si los programadores fueramos controladores aereos. He aqui el post


  • Cada vez que tu software falla, 300 personas mueren
  • Obtienes nuevas herramientas cada 30 años, las necesites o no
  • Todos tienen que usar el mismo lenguaje de programacion
  • Un buen dia es llegar a casa y no ver tu trabajo en las noticias
  • Un mal dia es llegar a casa y ver tu trabajo en los resaltados de todos los programas de noticias siendo diseccionado a detalle por los expertos
  • Si le echas una miradita a Reddit o a Digg mientras trabajas, todos se dan cuenta
  • No importa cuanto trabajo tengas, debes entregarlo en el tiempo estipulado
  • Tras solo unos cuantos pequeños bugs, serias despedido
  • Si tus herramientas dejan de trabajar por alguna razon, debes trabajar a ciegas y de memoria
  • El videojuego que juegas, solo tiene una vida
  • Tu director de proyectos es el gobierno
  • Cuando usas el software de alguien mas, necesitas conocer al programador personalmente y saber cuanto tiempo han estado trabajando.
  • Si haces tu trabajo bien, nadie lo notara.

Que tengas un buen dia siendo programador!


Post original en http://codist.biit.com/fiche/thecodist/article/if-being-a-programmer-were-like-being-an-air-traffic-controller

El tiro por la culata

Ups… parece que a Microsoft le esta saliendo el tiro por la culata. Resulta que Microsoft tendra que pagar $1,500 millones de dolares por infraccion de patentes.

Alcatel-Lucent demando a Microsoft hace tiempo por la infraccion de una patente de un sistema de audio para archivos digitales. Microsoft apelara, seguro, pero mientras tanto, la decision del juez le fue contraria.

Hoy en dia es practicamente imposible realizar algo en el area de tecnologia sin violar una patente. Por ejemplo si buscamos en Google Patents el termino Microsoft obtendremos cerca de 1000 patentes diferentes, algo similar pasara si buscamos Alcatel o IBM. Si esto le pasa a Microsoft con semejante ejercito de abogados, una pequeña o mediana empresa simplemente no tiene oportunidad.

Las patentes no aumentan la innovacion, todo lo contrario, la inhiben. Son un verdadero peligro para la industria. Lo vengo (y no soy el unico) diciendo desde hace mucho.

Un excelente sitio para informarse al respecto es http://www.nosoftwarepatents.com/. Denle una revisada, se van a asustar…

Por cierto, al escribir http://nosoftwarepatents.org (sin el www) me redirige al sitio http://$/ el cual obviamente no se encuentra… a alguien mas le pasa esto? Supongo que es una buena ironia 🙂

Carta abierta a Macrovision

Uno de los escritos mas populares, sin duda, de los últimos tiempos es la carta abierta de Steve Jobs para a las disqueras para eliminar el DRM en los contenidos digitales (especialmente en la musica). Ha provocado rios y rios de tinta (digital) sobre el tema. Desde la muy parcial carta de la RIAA tomando lo que le interesa de la carta para su beneficio hasta las expresiones en el deseo de las disqueras de eliminar el DRM, como por ejemplo EMI.

Pero hoy, alguien se VOLO la barda. Fred Amoroso, CEO de Macrovision (una compañia que desde 1983 se dedica a poner proteccion a los contenidos, creador de la proteccion para el DVD) respondio a la carta de Steve Jobs.

La carta es tan pero tan… hilarante, parcial, y hasta estúpida, que no me queda otro remedio que contestarle. (Si, se que nunca me leera. Eso no me prohibe escribirle ;))


Sr. Amoroso.

He leido su carta y esta tan llena de imprecisiones y datos falsos que me veo obligado a responderle puntualmente a algunas de sus ideas clave.

  • I believe that… (Yo creo que)
    Empezamos mal… Usted como CEO de una de las empresas mas grandes en restriccion de contenidos deberia tener algunas cifras y datos que mostrarnos. Basar su respuesta a la industria en "creencias" no hace sino afectar su credibilidad. Si no muestra cifras y datos duros es porque o no los tiene o no los quiere mostrar. Puedo entender que sea lo segundo.
  • …most piracy occurs because the technology available today has not yet been widely deployed… (la mayor parte de la pirateria ocurre porque la tecnologia disponible no se ha distribuido ampliamente..)
    Es cierto, el DRM no se encuentra en todos los aparatos y sistemas existentes. Y eso tiene una muy sencilla razon de ser. El mercado NO LOS QUIERE. Si fuera una necesidad que la mayorí­a de la gente desea, hoy hasta los manufactureros chinos estarian vendiendo DRM en las muñecas de plastico. Pero esto no es asi. Es mas, ni los dueños de las disqueras lo quieren. Asi que esta queja tendria que hacerla a los dueños de la musica y al mercado mismo. Esta usted luchando contra corriente.
  • …to make DRM-protected legitimate content as easily accessible and convenient as unprotected illegitimate content.. (hacer el contenido legitimo protegido por DRM tan conveniente como el contenido ilegitimo no protegido)
    Y que hay del contenido LEGITIMO no protegido? No seria eso lo mas conveniente para los usuarios?
  • "The solution is to accelerate the deployment of convenient DRM-protected distribution channels" (la solucion es acelerar el despliegue los canales de distribuciones de DRM convenientes…)
    Viendo los puntos anteriores, ustedes mismos crean el problema del DRM queriendo llevar a si mismo la solucion. Asumo que debe ser un buen negocio 🙂
  • "reasonable, consistent and transparent DRM" (razonable, consistente y transparente DRM)
    There is no such thing. Seguimos esperando un buen ejemplo.
  • "we will only delay consumers in receiving premium content in the home, in the way they want it" (solo retrasamos a los consumidores el poder recibir contenido premium en su casa, de la manera que lo quieren)
    El hecho es que la mayorí­a de las personas NO QUIEREN DRM. Copio del articulo: “Consumers expect that they can burn, share, and transfer their digital
    music files between different devices. They are confused and annoyed when technical restrictions keep them from doing so.”. Entonces, de donde saca su afirmacion?
  • "consumers who want to consume content on only a single device can pay less than those who want to use it across all of their entertainment areas" (Consumidores que quieren consumir contenido en un solo dispositivo pueden pagar menos que aquellos que quieren usarlo en todos sus centros de entretenimiento)
    Wrong again. Lo que su DRM protege es contenido, no un bien material. No puede hacer un simil con objetos fisicos, donde si lo uso en muchos lugares, gasto mas. Porque deberia pagar mas por ver un DVD en mi casa y en mi carro si a ti te cuesta lo mismo? Tu no me estas ofreciendo mas, no tengo porque pagar mas. No me estas ofreciendo una mejor alternativa a lo que existe hoy. Francamente, su "soluciuon" suena a simple y sencilla extorsion.
  • ""one size fits all" situation that will increase costs for many of them." (una solucion unica incrementa los costos para ellos [los usuarios])
    Hoy no es asi. Estamos obviando algo?
  • "DRM will increase electronic distribution" (DRM incrementara la distribucion electronica)
    Ni siquiera los ejecutivos de las disqueras piensan eso. Copio del articulo "Also, 62% believed that dropping DRM and releasing musicfiles that can be enjoyed on any MP3 player would boost the take-up ofdigital music generally.".
  • "DRM is an important ingredient in the overall success of the emerging digital world" (DRM es un ingrediento importante para el exito en el mundo digital)
    No de nuevo. Internet y los medios que facilitaron la comparticion de musica (desde descargas directas, pasando por Napster y hasta BitTorrent) son los causantes del auge de la musica digital. El DRM solo ha contenido su avance (no tanto como quisiera usted). Ver articulo anterior 🙂
  • "if the owners of high-value video entertainment are asked to enter, or stay in a digital world that is free of DRM, without protection for their content, then there will be no reason for them to enter, or to stay" (Si a los dueños de video de alto valor se les pide entrar o quedarse en un mundo digital libre de DRM, sin proteccion a su contenido, habra pocas razones para entrar o quedarse)
    Los CDs son contenido digital libre de DRM (al menos la mayorí­a de ellos). Y las disqueras gozan de plena salud. La gente esta dispuesta a pagar por contenido libre de proteccion, las distribuidoras que usan ese esquema estan creciendo como los hongos en verano. Y esto ha beneficiado a los usuarios y a los artistas, que tienen nuevos canales de venta.
  • "there are difficult challenges associated with maintaining the controls of an interoperable DRM system, but it should not stop the industry from pursuing it as a goal." (hay retos dificiles asociados con mantener los controles de sistemas DRM interoperables, pero no deben detener a la industria de conseguir su objetivo)
    Como ya vimos, la meta de la industria no es el DRM. El unico beneficiado a fin de cuentas es usted y su empresa. Nada mas.
  • "Truly interoperable DRM … and make it easier for consumers to manage and share content in the home" (Un DRM verdaderamente interoperable haran mas facil a los consumidores manejar y compartir contenido en la casa") [y todo el ultimo punto… ]
    No hay lugar como el hogar y no hay mejor DRM que no DRM. Eso cumpliria los objetivos que arriba enumera 🙂
  • "We offer to assist Apple…" (ofrecimos asistir a Apple..)
    Eso no fue lo que Jobs solicito. No se ofrezca 🙂
  • "As an industry, we should not let that happen…" (Como industria no deberiamos permitirlo)
    Ahora si, literalmente: Tu y cuantos mas? :). No parece haber mucho apoyo de su parte…
  • Thank you
    You’re welcome

No soy el unico que piensa asi. Esta luchando contra corriente y si esta es una guerra que quiere luchar, debo asegurarle que desde ahora, es una guerra perdida. Ya deberí­an saberlo.

Gracias.

Luis Z.

IT 2.0

Demasiadas letras se han vertido en el tema de "to vista or not to vista" por el lanzamiento de este sistema operativo (SO).
Sin embargo creo que estan perdiendo el punto importante de toda discusión: Los sistemas operativos estan dejando de ser importantes.

No me mal entiendan, no creo que los sistemas operativos vayan a desaparecer (je!) ni que van a dejar de producirse nuevas versiones de estos. Simplemente creo que van a dejar de tener la importancia mediática y tecnológica que habí­an tenido hasta ahora. Hay varios motivos en los que sostengo esta afirmación:

1. Los sistemas operativos han alcanzado madurez tecnológica.
Hoy Windows vista no es muy diferente de XP como este ultimo no lo fue de Windows 2000. Ha mejorado tapando los hoyos y problemas que venia arrastrando (creando otros, sin duda, pero esa es otra historia). Si se ve mas bonito y mejoraron el buscaminas, pero no ha mejorado o innovado grandemente. Algo similar pasa con MacOSX. Porque? Porque no hay mucho que mejorar. Lo que existe funciona, y funciona mas o menos bien. Mejorar seria implicarí­a crear nuevas cosas, pero esto quedarí­a fuera de los dominios de los SO.

2. La competencia ha creado por fin un mercado de ellos.
Hasta antes de windows xp, si querias una máquina tenias que comprarla con el SO de microsoft. Usar linux? eso era para geeks que gustan de las pantallas de texto y los comandos raros. Usar MacOS? Es demasiado caro, ademas, nadie usa MacOS!… hoy eso ha cambiado. Hoy ambos sistemas son una opción viable para diferentes nichos de mercado. Se ha acabado la dependencia de un proveedor y se ha hecho mas amplia la oferta.

3. La interoperabilidad entre sistemas es alta.
Aunado al punto anterior, hoy puedes abrir documentos de word en MacOs y Linux, o navegar en internet cosa que antes se antojaba imposible o muy complicada. Grandes esfuerzos se han hecho por parte de la comunidad open source (junto con sus patrocinadores, que no son pocos) y de Apple en este sentido. De nuevo, ya no dependes de un solo proveedor, mas que para algunas aplicaciones especificas (si, te estoy viendo a ti, photoshop).

4. Los SO se han convertido en un "commodity".
El termino "commodity" se refiere a lo que llamamos en español "materias primas". Hoy ya no es importante que sistema operativo tienes, sino las aplicaciones que utilizas.

5. Los SO se han vuelto demasiado complicados, y ya no responden a las necesidades generales.
Mucho se ha hablado de que si se quisiera hacer bien Windows, se tendrí­a que empezar de cero, debido a su inmensa complejidad. Sin embargo, esto no es posible. Tirar 20 años de trabajo de Microsoft seria un suicidio comercial. La única opción que tiene Microsoft (como lo ha hecho) es empezar a agregar capas a su sistema operativo, con nuevas aplicaciones incluidas en el (por ejemplo, Media Center). Sin embargo esto solo incrementara su complejidad lo que a la larga, no sera bueno para ellos. Un buen ejemplo de esto es lo complicado que es manejar el codigo fuente de windows (mas info en este post hecho por un desarrollador de windows http://discuss.joelonsoftware.com/default.asp?joel.3.421767.7), o que tal el proceso enorme para agregar la funcionalidad de apagar windows?. Llegara un momento en que tendrán que poner un hasta aquí­, trazar una linea y decir: "Hasta aquí­ llego windows".

6. La entrada de las WebApps reduce la necesidad de las aplicaciones de escritorio.
Talvez esta sea la mayor amenaza para los sistemas operativos. Las aplicaciones web. Hasta hace poco Outlook era considerado indispensable. Hoy, el correo web es talvez mas usado que el de escritorio. Y yo si creo firmemente que con el tiempo *algunas* aplicaciones se trasladaran al web. La suite de google (docs y spreadsheets) hace facil lo que antes era complicadisimo. Por ejemplo la manipulación simultánea de archivos (cuantas veces no mandamos un "excel" por e-mail para revisión?). Porque esto es un peligro para los SO? Simple. Hoy es posible usar google docs en linux, mac, windows y en diferentes plataformas (explorer, firefox, safari, opera, etc). Hoy ya no es necesario que tengas windows y excel para poder escribir y usar hojas de calculo. La web vino a romper con paradigmas, para bien y para mal. De nuevo, la dependencia tecnológica se reduce ampliamente.

Asi pues, los sistemas operativos actuales estan implosionando poco a poco y dandole paso a los "jóvenes"… y recibiendo amenazas externas via las web aps.
Repito, si bien no desapareceran, dejaran de ser tan importantes en la industria y veremos crecer la quota de mercado de otros participantes. Quien sabe, con el tiempo podria salir un nuevo competidor. Y muy seguramente no veremos las inversiones que hemos visto hasta ahora.

La era I.T. 2.0 (o 3… o 4…) ha comenzado.

Errores basicos (y comunes) en el desarrollo Web.

  1. Valida! valida! valida!

    Esta es la madre de todas las reglas. La mejor manera de saber si estas haciendo bien las cosas del lado tecnico es validar lo que estas haciendo. El W3C tiene la herramienta de validación mas completa en el Web. Esta herramienta te dirá si tu código esta bien construido o no. Y aunque se que al decir esto me hará acreedor a un linchamiento publico, la validación no tiene que ser perfecta. Validar tu código te permite saber que tan bien estas haciendo las cosas pero no es una regla de oro. Usualmente en sitios muy complicados o con código generado externo es normal que tengas un par de advertencias, pero procura que estas sean las menos. Si encuentras errores, dedí­cate a arreglarlos en la medida de lo posible. Haz las cosas bien desde el principio. Con el tiempo te dar�s cuenta que no es nada difí­cil escribir código correcto, lo harás de manera automática.
  2. Apégate a los estándares

    El W3C es un comité que definió (y lo sigue haciendo) las reglas seménticas y sintácticas con las que se deberí­a de trabajar en el Web. Estas reglas te aseguran que si las sigues no tendr�s problemas para desplegar tus sitios en ningún lado. Desgraciadamente y como seguramente ya sabes, Microsoft decidió irse por la libre. Uso las reglas que le convinieron y modifico y agrego las que quiso. Esto provoco que las páginas desarrolladas para Internet Explorer no se vieran bien en otros navegadores o tecnologí­as. Evita como la plaga el uso de código y tecnologí­as propietarias. Para cada una de estas, hay una manera estándar que la sustituye. En páginas como quirksmode, positioniseverything y alistapart hay innumerables tutoriales de como hacer bien las cosas.
  3. The right tool for the job

    La herramienta correcta para el trabajo. Podemos dividir este ámbito en 2.

    1. Server side
      Este es uno de los puntos cruciales al comenzar a desarrollar un proyecto Web. El frente de nuestra aplicación Web (casi) siempre será html. Pero para la parte del servidor puede ser cualquiera de las tecnologí­as existentes. Es importante tener un abanico amplio de opciones porque cada una tiene sus ventajas y desventajas. Usualmente estas son derivaciones del triangulo tiempo-dinero-calidad. Conoce tu entorno y escoge bien.
    2. Client sideEn desarrollo Web como ya dije, usualmente el frontend será html. Pero usualmente este se usa incorrectamente, debido a que es muy permisivo. HTML es semántico, es decir, cada pedazo de código tiene un significado por si mismo. Por ejemplo si quieres usar un encabezado lo correcto es usar un tag
      <h1>(o h2 o h3). Si quieres mostrar un pedazo de código, usa el tag <code> </code>. Si quieres mostrar un encabezado en una tabla usa <th> y <theader>. Un lugar para cada cosa y cada cosa en su lugar. Revisa la documentación correspondiente.
  4. Separa presentación y contenido.

    El HTML es un lenguaje que te permite representar sem�nticamente el contenido. Es decir cada elemento tiene un significado por si mismo. Sin embargo y aunque es posible darle una correcta representaci�n grafica solamente con HTML, existen tecnologí­as superiores para este propósito y que harán tu vida mucho mas fácil. La más notoria es CSS. Mediante CSS tú puedes darle estilo a tu código HTML y facilitaras su mantenimiento. Además que es una herramienta mucho mas poderosa que solamente el HTML. Talvez el mejor ejemplo del uso de CSS es CSS Zen Garden. Esta página usa un documento HTML igual para todas las paginas y solamente con el uso de una hoja de estilos diferente la presentacián cambia radicalmente entre un ejemplo y otro.

  5. No ignores a las minorí­as

    Un error muy común (y que viene usualmente de parte de los jefes, aunque no es exclusivo) es la frase “A mi me importa que se vea en Internet Explorer, lo demás me importa un carajo”. Esto es una terrible forma de pensar por varias razones.

    1. IE hace las cosas mal y como se les da la gana.
    2. Debido a (1) si te dedicas a desarrollar para IE los demás seguramente tendrán problemas al ver tu aplicación.
    3. En estos momentos la mayorí­a de las personas usan Internet Explorer, aunque esto es parcialmente cierto y podrí­a no serlo en un futuro próximo. En los sitios dedicados a tecnologí­a la mayoria de las visitas se realizan a traves de Firefox. Y en los sitios en general se tiene una estadistica promedio de que firefox tiene el 25% del mercado. Opera tiene menos del 10%. Ambos han ido en un ascenso constante y no se ve motivo para que esto deje de ser asi.
    4. Creo que ningun negocio se puede dar el lujo de rechazar del 30% al 50% de su clientela potencial. Especialmente cuando es terriblemente sencillo atender al 100% de esta. Si tu crees que puedes darte este lujo, está bien. Seguramente tus competidores lo pensaran dos veces antes de rechazar el 30% de sus ganancias.
  6. No ignores a las minorí­as (segunda parte)

    Muy relacionado con el punto anterior (y con el primero y segundo) esta no ignorar a tu clientela especial. Existen muchas personas que utilizan el Web por medios no convencionales, como las personas con problemas visuales, la gente que navega en su PDA, celular y pantallas lectoras. Si bien no es un mercado muy amplio, es cuando menos agresivo el no permitirles el acceso a tus contenidos. Si bien muchas veces es poco viable realizar contenidos alternos para los lectores especiales, usualmente es suficiente con que sigas las reglas anteriores para que tus lectores puedan acceder a tu contenido de una manera viable.
  7. Mantente actualizado…

    El Web es un ambiente cambiante por naturaleza. Cada cierto tiempo algo nuevo revoluciona la manera de hacer las cosas. Así­ mismo muchas cosas quedan en el olvido. Mantente informado y evita el uso de elementos descartados con el tiempo.
    Tip: El tag font no se usa desde hace más de 6 años! Keep up with the times, man! 🙂
  8. … pero no abuses

    A pesar de que nuevas tecnologí­as nacen cada minuto, no tienes porque usarlas todas. Y especialmente evita sobre usarlas. No porque AJAX hoy sea la tecnologí­a que todo el mundo usa tienes que usarla absolutamente en todo el sitio. Hay veces que usar un link funciona perfectamente. No tienes que reescribir la funcionalidad con javascript para obtener exactamente el mismo resultado. Busca el equilibrio. Una vez mas, the right tool for the job.

El desarrollo Web es un campo en expansión sin duda, pero estamos alcanzando muy rápidamente un punto de maduración. Por lo que te sugiero que aprendas de los demás, y comparte tus descubrimientos. Esto sin duda nos ayudará a todos. Y sobre todo, no cometas los errores que los demás ya cometimos 🙂