Archive | opinion RSS feed for this section

SEO: el nuevo anti-virus

Ayer un amigo me estuvo dando consejos para mejorar la posición de mis páginas en el indice de Google.  Escuché estas recomendaciones con atención porque:

  1. Una página solo es visitada si tiene una buena posición en Google
  2. Para tener una buena posición en google hoy en día, una página modesta necesita valerse de todas las astucias posibles.

La mayoria de estas recomendaciones tienen que ver con detalles de cuando, como y donde usar diferentes elementos de las páginas HTML, es decir, detallitos menores cuya única importancia es la de tener influencia en los algoritmos que se ejecutan secretamente en los servidores del titán de internet.

Hay toda una industria millonaria alrededor del SEO y se me ocurre que de cierta manera se parece a la industria de los anti-virus hace unos 15 años. Representan un gasto de recursos y energias que no crean ningun valor intrinseco otro que el de llenar un hueco abierto por las falencias del sistema dominante del momento.

Sobre este tema, que se conoce como Search Engine Optimisation, ya había escrito en el pasado.

‘Tinkering’, bricolaje, cacharreo

Los usuarios de computador necesitan conocer cada vez menos la manera como un computador funciona. Si las tripas de la máquina se vuelven cada día más invisible, esto se debe a que el usuario puede ahora controlar el computador usando interfaces gráficas avanzadas. Estas interfaces permiten controlar el computador usando imagenes que representan objetos fisicos (botones, ventanas, etc).

Comparemos esto con lo que había hace un par de decadas. En ese entonces, el usuario controlaba el computador escribiendo comandos que la máquina ejecutaba. Pienso por ejemplo en el Commodore 64 en el cual para cargar y ejecutar el primer programa de un diskette había que escribir:


load "*", 8, 1

… algo que parecía (y parece) brujería.

En los primeros PCs, que usaban el sistema operativo DOS, los usuarios tambien tenían que escribir comandos. También había que entender, más que ahora, detalles sobre los archivos y los directorios.

Aunque uno puede encontrar primitivas esas interfaces, algo bueno que tenían era que exponían el computador como lo que es: una máquina programable. El commodore 64 por ejemplo venía con un interprete de basic a disposición del usuario apenas éste prendía el computador. A punta de jugar con los diferentes comandos que aparecían en el manual, un niño podía comenzar a intentar cambiar una o dos cosas y luego a leer mas a fondo los manuales para entender como hacer cosas mas avanzadas. Creo que gracias a eso, miles de niños y jovenes aprendieron los rudimentos de la programación. Todo a punta de “cacharrear” la maquina, urgando aquí y alla. Eran máquinas que no intentaban esconder gran cosa, todo lo opuesto a, digamos, el iPhone.

La claridad que tenía la gente del computador como una máquina programable se veía reflejada también en los libros. Algo chevere por ejemplo erán los libros que contenian juegos en basic para que los niños los copiaran en sus commodores 64. Creo que ya no existe nada parecido. Ahora la noción de programador y usuario están claramente separadas.

El mundo del “cacharreo” informatico hoy en día se ha desplazado (como todo) de los computadores personales a la web. Debe haber mucha gente que a aprendido a programar siguiendo el siguiente camino: copiar un manojo de HTML para crear una página web. Cambiar una o dos cosas. Aprender un poco mas de HTML y finalmente aprender PHP para poder generar páginas dinámicas.

P.S.: Acabo de leer este excelente artículo de Cory Doctorow sobre el iPad. Es relacionado con los temas que toca este post.

Twitter: “as simple as possible, but not simpler”

twitter

Personas como Dave Winer creen que definitivamente hay algo en twitter que vale la pena pero que twitter, tal como lo conocemos, será reemplazado en el corto o mediano plazo por algo “parecido pero mejor”. Una de las razones por las que Winer considera que twitter no puede seguir siendo el sistema de “twitting” es su arquitectura centralizada (mas bien anti-web). Otras personas consideran que es demasiado limitado y que le faltan X, Y y Z funcionalidades.

Yo tengo la sospecha de que Twitter va a seguir siendo el sistema que es, con muy pocas variaciones, y que no será reemplazado por nada “mejor” durante un buen tiempo. Mi sentimiento es que twitter está en un punto perfecto de simplicidad, un punto tal que el usuario le perdonará inconcientemente cualquier limitación siempre y cuando siga siendo tan facil de usar.

Me ha gustado la manera como ha evolucionado twitter. Practicamente solo ha añadido al sistema conceptos que ya habian surgido de manera espontanea entre los usuarios, como la referencia a otro usuario (usando “@”) o el concepto de “retweet” (“RT”).

Otra cosa buena de twitter es que a pesar de ser centralizado, ha ofrecido interfaces de programación tremendamente sencillas para construir aplicaciones independientes sobre twitter, lo cual ha dado lugar a un gran ecosistema alrededor que va a hacer dificil de hacer migrar a otro sistema.

En fin, twitter es un ejemplo de como la simplicidad y las APIs abiertas pagan.

Sobre la importancia de saber programar en C

Hace cerca de 15 años, en la Universidad de los Andes, la programación se enseñaba usando “C“, un lenguaje de programación muy popular desarrollado en los 70, en paralelo con el desarrollo del sistema operativo UNIX.  En los 90, lenguajes de programación como Java fueron reemplazando al lenguaje C tanto en la empresa como en las aulas. Hoy en día, según me dicen, la programación se enseña usando Java y los estudiantes simplemente no aprenden C.

Este cambio preocupa a ciertos de mis colegas quienes consideran que, aún si no se va a usar este lenguaje, un programador debería saber programar en C. Muchos de estos colegas se quejan de los programadores más jovenes acusandolos de “no saber que es un apuntador”, lo cual parece ser, por el tono de la queja, algo muy grave. Qué tan realmente es importante saber programar en C para un programador? Cual es el realmente el fondo del asunto.

Yo supongo que lo que deploran mis colegas es el hecho de que al no haber tenido contacto con un lenguaje con manejo explicito de la memoria, aritmetica de apuntadores, acceso directo a ciertas funciones del sistema, etc, los programadores de hoy en dia sean menos concientes de qué es lo que ocurre con los recursos de la maquina cuando un programa es ejecutado. El verdadero debate es entonces sobre que tanto necesita conocer un programador sobre la manera como sus programas actuaran en terminos de los mecanismos de base de un computador. Personalmente creo que es importante. Por esta misma razon, creo que es importante tener idea de como está implementado un compilador.

Por otra parte, recordemos a Edsger Dijkstra, quién dijo: “computer Science is no more about computers than astronomy is about telescopes”.

Sobre la metida de pata de Buzz

Google metió la pata en su lanzamiento de Buzz (una especie de servicio de mensajeria estilo twitter): los contactos mas “cercanos” de un usuario quedaban visibles para todos justo después de activar la cuenta y hasta no cambiar las preferencias para evitarlo. Esta información hace parte de lo que mucha gente considera como información personal y es dificil entender como en Google pudieron decidir que era una buena idea exponerla de esa manera. Siendo malicioso uno podría pensar que es un cálculo acertado de la parte de Google, a la mayoría de la gente esto le parece un detalle sin importancia y en cambio la conveniencia de tener una “red social” estilo facebook/twitter armada sin ningún esfuerzo hace el servicio atractivo inmediatamente. Digo “siendo malicioso”, pero en realidad ese sería el juicio que todo el mundo haría de tratarse de Microsoft y no de Google. Desconfiemos.

Dos herramientas recomendadas

Hay dos herramientas que uso desde un buen tiempo para organizar mis cosas. La primera es simplemente un wiki, usado como una libreta de notas. No deja de ser curioso escribir documentos de uso personal usando una herramienta concebida para escribir documentos abiertos de manera colaborativa. Funciona muy bien, es como usar una libreta de notas con la ventaja de poder re-escribir cualquier parte. El software que uso es dokuwiki.

La segunda herramienta es un programa para administrar listas de cosas por hacer (to-do lists). Inicialmente intenté usar un plugin para dokuwiki que sirve para editar to-do lists pero me parece que la interfaz de edicion de texto de un wiki no es optima para llevar to-do lists. Ahora estoy usando mytinytodo que siendo bastante minimalista es perfecto para mis necesidades.

Menos es más

Manuel Cerón opina en mi post anterior que la calidad de las interfaces de usuario de las aplicaciones en la web no es aceptable. Para Manuel, estas interfaces no son ni siquiera comparable a las que tenían las aplicaciones de Windows 95. Siguiendo esta idea, lo ideal sería tener interfaces avanzadas unidas a las ventajas de la web (ubicuidad, propagación automática de mejoras, etc). La popularidad de las aplicaciones web hoy en día se explicaría no gracias a su ergonomía sino a pesar de carecer de ella.

Esta es mas o menos la misma idea que motivó la creación de los applets de java hace ya cerca de 15 años y que está detrás de productos como silverlilght o flash. El objetivo mas o menos explícito de estas tecnologįas es reemplazar a la web como plataforma de aplicaciones por algo igual de conveniente pero con mejores interfaces de usuario.

Creo que calificar las interfaces de usuario en la web de pobres es algo simplista. La razón es que para una gran categoría de aplicaciones, tal vez la mayoría, las interfaces web no son solo suficientes sino óptimas. Esto puede parecer raro, así que intentaré explicar por qué lo creo así.

Las aplicaciones web estan restringidas a un pequeño numero de elementos de interacción con el usuario y a su comportamiento estándar. Basicamente, texto, imágenes, enlaces, campos de texto, menus y botones. Por otro lado, las tecnologías generales de creación de interfaces de usuario permiten crear virtualmente cualquier tipo de componente visual y  de interacción imaginable y frecuentemente incluyen un gran numero de componentes predefinidos mas o menos sofisticados.

En teoría si una tecnología “puede lo más” también “puede lo menos” y deberia preferirse. La realidad es mas complicada. Las interfaces HTML no solo permiten hacer casi todo lo que necesitan la mayor parte de aplicaciones gráficas sino que además su sencillez tiene beneficios secundarios como el que:

  • La curva de aprendizaje para usarlas sea muy baja.  No se requiere entender muchos conceptos.
  • Las aplicaciones sean mas robustas.

Por supuesto, hay categorias de aplicaciones  para las cuales HTML no es suficiente. Creo que esta categoría de aplicaciones se restringe principalmente a las aplicaciones cuya función principal es interpretar pequeños gestos del usuario como operaciones de edición. Me refiero a programas como editores de texto o  programas de edicion gráfica. Los juegos son otra categoría que también escapa al rango que cubre HTML, pero los juegos son una categoria de software especial en muchos otros aspectos.

Muchas de las limitaciones de la web como plataforma de aplicaciones están desapareciendo a medida que la velocidad de las implementaciones javascript mejora y que el soporte a nuevas maneras de enriquecer las interfaces web se hacen comunes entre los navegadores. Sin embargo creo que la continuidad del exito de la web como plataforma de desarrollo de aplicaciones ni siquiera depende de esas mejoras. A veces, menos es más.

Powered by WordPress. Designed by Woo Themes