Una profundidad vertiginosa, pero invisible — Jean-Baptiste Queru

Ni siquiera recuerdo cómo me topé con este artículo de Jean-Baptiste Queru, pero me pareció muy bueno por la simpleza con que está escrito y por las reflexiones sobre Steve Jobs y Dennis Ritchie. Además, es un lindo artículo para hacer pensar al “usuario común” sobre la complejidad que hay en cada acción que se lleva a cabo en su computadora: desde abrir un sitio web, hasta presionar una tecla.

Como otras veces: lo vi, me gustó y decidí traducirlo al castellano. Jean fue muy amable en darme permiso (1, 2), así que me gustaría que si ven algún error de traducción, me lo hagan saber para que lo corrija. Sin más preámbulos, se los dejo:

Una profundidad vertiginosa, pero invisible

Acabas de entrar en la página principal de Google.

Sencillo, ¿no?

¿Qué es lo que sucedió realmente?

Bueno, cuando sabes un poco sobre cómo funcionan los navegadores, no es tan sencillo como parece. Has puesto en acción HTTP, HTML, CSS, ECMAscript, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.

Vamos a simplificarlo.

Acabas de conectar tu computadora a www.google.com.ar.

Sencillo, ¿no?

¿Qué es lo que sucedió realmente?

Bueno, cuando sabes un poco sobre cómo funcionan las redes, no es tan sencillo como parece. Acabas de poner en acción DNS, TCP, UDP, IP, Wi-Fi, Ethernet, DOCSIS, OC, SONET, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.

Vamos a simplificarlo.

Acabas de tipear www.google.com.ar en la barra de direcciones de tu navegador.

Sencillo, ¿no?

¿Qué es lo que sucedió realmente?

Bueno, cuando sabes un poco sobre cómo funcionan los sistemas operativos, no es tan sencillo como parece. Acabas de poner en acción un kernel, un controlador de puertos USB, un distribuidor de entrada, un controlador de eventos, un suavizador de tipografías, un entramador de píxeles, un sistema de ventanas, un controlador de gráficos, y más, todo escrito en lenguajes de alto nivel que son procesados por compiladores, enlazadores, optimizadores, intérpretes, y más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.

Vamos a simplificarlo.

Acabas de presionar una tecla de tu teclado.

Sencillo, ¿no?

¿Qué es lo que sucedió realmente?

Bueno, cuando sabes un poco sobre cómo funcionan los dispositivos de entrada, no es tan sencillo como parece. Acabas de poner en acción un regulador de energía, un debouncer, una entrada de multiplexor, un stack de USB, un hub de stacks USB. Todo implementado en un mismo chip. Este chip está construido sobre láminas muy delgadas de silicio monocristalino altamente purificado, dopado con cantidades diminutas de otros átomos que son añadidos a la estructura de cristal, interconectados con múltiples capas de aluminio o cobre, que son depositadas de acuerdo a ciertos patrones de luz ultravielota de alta energía, que son enfocados con una precisión de una fracción de micrón, conectados al mundo exterior a través de delgados cables de oro, todo dentro de un empaquetado hecho con una resina dimensional y térmicamente estable. Los patrones de dopaje e interconexión implementan transistores, los cuales son agrupados para crear puertas lógicas. En algunas partes del chip, las puertas lógicas son combinadas para crear funciones aritméticas y a nivel de bits, que a su vez son combinadas para crear unidades aritmético lógicas (ALU). En otra parte del chip, las puertas lógicas son combinadas para crear bucles biestables, que se alinean en filas, las cuales son combinadas con los selectores para crear un registro en blanco. En otra parte del chip, las puertas lógicas son combinadas en controladores de bus y decodificadores de instrucciones y microcódigo para crear un programador de ejecución. En otra parte del chip, son combinados en multiplexores de direcciones y datos, y circuitos temporales para crear controladores de memoria. Aún hay más. Estas son tecnologías tan increíblemente complejas que harían que cualquier ingeniero se maree si piensa demasiado en ellas, y tal es así que ninguna compañía puede ocuparse de toda su complejidad.

¿Podemos seguir simplificando?

De hecho, muy tenebrosamente, no, no podemos. Apenas podemos comprender la complejidad de un chip de un teclado, y aún así no hay un nivel más simple. El siguiente paso nos llevaría al software usado para diseñar la lógica de los chips, el cual en sí mismo tiene un nivel de complejidad que nos haría volver al comienzo del bucle.

Las computadoras de hoy son tan complejas que solo pueden ser diseñadas y fabricadas usando computadoras apenas un poco menos complejas. A su vez las mismas computadoras usadas para diseño y fabricación son tan complejas que ellas mismas deben ser diseñadas y fabricadas por computadoras apenas un poco menos complejas. Deberíamos retroceder por muchos bucles hasta llegar a un nivel en el que se construyan desde cero.

Una vez que comienzas a comprender cómo funcionan y son creados nuestros dispositivos modernos, es imposible no marearse en la profundidad de todo lo que entra en juego, y no sorprenderse por el solo hecho de que funcionen, cuando la ley de Murphy dice que esto simplemente no debería ser posible.

Para quienes no son “tecnológicos”, todo esto es una caja negra. Eso es un gran éxito de la tecnología: todas estas capas de complejidad están completamente ocultas y la gente puede usarlas sin siquiera saber que existen. Esa es la razón por la que mucha gente puede encontrar tan frustrante usar una computadora: hay tantas cosas que pueden salir mal que algunas de ellas inevitablemente lo harán, pero la complejidad es tan profunda que es imposible para la mayoría de los usuarios hacer algo al respecto.

Por eso es tan difícil para los tecnológicos y no tecnológicos comunicarse: los tecnológicos saben mucho sobre muchas capas y los no tecnológicos saben muy poco sobre muy pocas capas, y se dificulta establecer una comunicación directa y efectiva. La brecha es tan grande que ya ni siquiera es posible que una persona medie entre los dos grupos, y es por eso que, por ejemplo, existen esos centros de soporte técnico telefónico tan complicados y sus distintos niveles. Sin estas grandes estructuras de soporte técnico, terminas en la frustrante situación que vemos cuando los usuarios finales tienen acceso a una base de datos de errores que es usada directamente por ingenieros: ni unos ni otros obtienen la información que necesitan para cumplir su objetivo.

Es por eso que la prensa masiva y la población general ha hablado tanto sobre la muerte de Steve Jobs y relativamente tan poco sobre la muerte de Dennis Ritchie: la influencia de Steve está en una capa que la mayoría de la gente puede ver, mientras que la de Dennis es mucho más profunda. Por un lado, puedo imaginar dónde estaría el mundo de la informática sin el trabajo que realizó Steve Jobs ni la gente que inspiró: probablemente sería un poco menos brillante, un poco más beige y cuadrado. A grandes rasgos, sin embargo, nuestros dispositivos todavía funcionarían del mismo modo y harían las mismas cosas. Por otro lado, literalmente no puedo imaginar dónde estaría el mundo de la informática sin el trabajo que realizó Ritchie ni la gente a la que inspiró. A mediados de los 80, la influencia de Ritchie ya se había hecho dominante, e incluso en ese entonces muy poco quedaba de la era pre-Ritchie.

Por último, pero no menos importante, es por eso que nuestro sistema de patentes está quebrado: la tecnología ha hecho un trabajo tan sorprendente en esconder su complejidad, que la gente que regula y administra el sistema de patentes está apenas consciente de la complejidad de lo que está regulando y administrando. Este es el problema fundamental: tal como las discusiones proverbiales en los senados sobre una planta nuclear terminan siendo acerca del color con que deberían pintarla, las discusiones sobre patentes de sistemas modernos de computación terminan siendo sobre el tamaño de las pantallas y el orden de los iconos, porque en ambos casos esos son los únicos aspectos que la gente involucrada en la discusión es capaz de discutir, aunque sean irrelevantes para la verdadera función del sistema en cuestión.

Enlace: Artículo original

Jean-Baptiste Queru es un ingeniero que trabaja en Google, en el proyecto Android Open-Source. Pueden revisar sus perfiles de Twitter, LinkedIn y Google+.

Mi crónica del Barcamp Litoral 2011 #barcamplitoral

Después de que un remisero se equivoque y me lleve a la UTN en lugar de la UNL, pude por fin llegar al predio. Estaba muy entusiasmado por asistir al Barcamp 2011. Iba a ser mi primera vez en un evento que es en realidad un anti evento, o como los organizadores lo llaman: una “desconferencia” sobre tecnología.

Al acreditarme en la entrada también me llevé unos cuantos folletos, tarjetas y lapiceras. Luego me pusieron una pulsera naranja con el logo del evento, y me dieron una remera de regalo por haber llegado temprano. Nada mal.

Primera impresión

Barcamp Litoral 2011

La organización se notó en que toda la gente del staff tenía su remera y uno podía acercarse a cualquiera de ellos para sacarse una duda como dónde queda tal o cual sala. El evento contaba con varios sponsors importantes, y se pudo ver un gran trabajo en todo lo demás: folletos, remeras, comida, sonido, etc.

También hubo cierta desorganización controlada e intencional, que se observó en cómo se plantearon las charlas que se dieron: no había nada pactado. Cualquier persona podía anotarse para dar una charla, y el resto de nosotros podíamos asistir a la que queramos, sin necesidad de anotarse ni nada por el estilo. Es algo descontracturado, y esta muy bueno.

Charlas

Charla en la sala 600

Los pizarrones se llenaron bastante rápido. Mucha gente tenía charlas para dar, y escuché a algunas personas lamentarse por haberse quedado sin espacio para dar la suya. Miré las tablas de horarios y me anoté en un cuaderno a cuáles iba a asistir. Luego comí cualquier cantidad de medialunas —que eran gratis—, y las 10.00 Hs asistí a la primer charla.

A continuación voy a nombrar las que más me gustaron:

“Emprender es una cuestión de actitud”, por Ismael Briasco

Ismael Briasco es el fundador de PsicoFXP, una de las comunidades en línea más grandes de Argentina. La charla fue muy motivadora y para nada técnica, lo cual puede estar muy bueno para quienes les guste la tecnología pero no estén particularmente interesados en programación.

“Hacia una plataforma abierta”, por Manuel Garcia

El líder de proyectos de Mercado Libre: con esa chapa podemos estar seguros de que estamos escuchando a un groso. La charla fue demasiado muy nutritiva. Contó un poco como funciona la arquitectura informática de Mercado Libre, y luego se enfocó en explicar cómo están haciendo que cada módulo de su plataforma pueda funcionar independientemente de los demás.

También presentó las APIs de ML —que yo no sabía que existían—, y explicó un poco cómo usarlas para crear aplicaciones que interactúen con los datos de su plataforma.

“Modelo de conectividad y acceso a internet para una ciudad digital”, de Marcelo Sanchez

Fuera de las salas de charlas

Esta fue una de las charlas que más disfruté. Realmente me asombró la cantidad de cosas que está haciendo la Municipalidad de Rafaela utilizando internet y la tecnología en general: Más de 20 portales temáticos, salas de informática, internet en escuelas rurales, desarrollos propios de software, y más cosas que no recuerdo por no haber ido tomando nota.

En fin, muy bueno todo, y un ejemplo más que interesante para el resto de las municipalidades. Lo único que me pareció criticable es que usen Windows; aunque paguen todas las licencias —que lo hacen— estar atados a una empresa como Microsoft lo veo como una gran desventaja.

Otras charlas

También asistí a la charla sobre identidad digital y privacidad en las redes sociales, a cargo de @ydea2, que estuvo muy didáctica y divertida. Fue una charla que tranquilamente podría dar en escuelas secundarias donde los chicos parecen usar las redes sociales sin medir los riesgos ni consecuencias.

Sobre programación asistí a las charlas “Creando aplicaciones para móviles con PHP” y “El desarrollo de software como un proceso continuo“, ambas estuvieron muy bien. La segunda se dio en una sala para 25 personas, lo cual es una lástima porque el contenido era tan bueno como para darlo en la sala para 600. A ver si en el próximo Barcamp se anima ;-)

Y finalmente, estuve en la charla que dio el intendente de Rafaela, Omar Perotti. Una charla no muy técnica, pero igualmente interesante.

Podría haberme quedado, ya que el evento siguió hasta más tarde, pero me retiré a las 17 Hs. porque tenía algunas horas de viaje por delante.

Conclusión

Es un evento genial, lleno de gente con buena onda. El ambiente es muy relajado, se ven muchas mochilas, se escucha gente hablando de redes sociales, internet, e informática en general por todos los rincones. Muchos promotores del software libre, muchos programadores, muchas remeras nerds. Muy bueno.

Enlaces: Web Oficial del Barcamp Litoral | #barcamplitoral

Fotos: Fotos oficiales en Facebook | + Fotos en FlickrMis pocas fotos

Cambiando WordPress de dominio y directorio

Hoy por fín me digné a cambiar la URL de este humilde blog. Ya no nos encontramos en natancalzolari.com.ar/blog, sino que ahora estamos en blog.natancalzolari.com.ar. Es decir que no solo cambié el dominio del blog, sino que además cambié el directorio de la instalación de WordPress.

Esto es algo que hice otras veces, así que quisiera comentarle a aquellos bloggers propensos a los cambios cuál es el procedimiento a seguir. Continue reading

Proyectos web que espero concretar

Tengo un par de proyectos web en mente. No se si tendrán aceptación, quizás no, pero van a tener que creerme cuando digo que los voy a encarar más por placer que por otra cosa.

Uno es local, para la ciudad de Villa Constitución, y no pienso dar muchos detalles sobre la idea (aunque no es muy dificil de imaginar). Pero puedo decir que se podrá acceder desde Villense.com.ar.

El segundo proyecto se apareció hace unas horas, y momentos atrás comencé a bosquejar algo del diseño:

SomeNews.com.ar

SomeNews.com.ar será un sitio para publicar noticias y artículos solo en inglés. No voy a necesitar periodistas, voy a necesitar traductores, ya que la idea sería tomar noticias en castellano de otros medios, traducirlas al inglés, y publicarlas acá (y sí, voy a tener que pedir bastantes permisos para esto).

¿Por qué? Porque si. No son ideas originales, novedosas, ni nada por el estilo. Y si es útil para algo o no, se verá después. De momento, tenía ganas de encarar algún proyecto web en mi tiempo libre no tan libre.

En definitiva, este post es solo una forma de obligarme a mi mismo a no abandonar a medias estas ideas. Ya veremos en un tiempo qué sucede.

Actualización 22 agosto de 2010 00:00 Hs: Es una lástima que no tenga tiempo libre como para encarar mejor estos proyectos. Sobre Villense.com.ar todavía no hice nada mas que hablar y sobre SomeNews llegué a la conclusión de que probablemente no le deje ese nombre, pero no sé igualmente cuál usar. ¿Alguna sugerencia? (si la elijo el autor será mencionado en el “about” del sitio). Y adelanté un poco del diseño, como se ve en la imagen:

SomeNews.com.ar

Algo del diseño de SomeNews.com.ar con contenido de prueba robado de Guardian.co.uk

Actualización 27 julio de 2011 05:48 Hs: Reviendo algunas publicaciones viejas me encontré con este post. Debo comentar que no voy a crear SomeNews (o como sea que fuera a llamarse) porque ya estoy participando en una comunidad de bloggers y traductores llamada Global Voices, donde traduzco noticias del inglés al castellano.

Con respecto al otro sitio: usé el dominio Villense.com.ar para alojar un blog sobre mi ciudad. Quizás con el tiempo se convierta en otra cosa, mientras tanto, disfruto cada cosa que publico allí :)

WordPress como Portal Municipal

Feria del Libro

Presentación del Sitio Web Municipal en la Feria del Libro Local

Cuando entré a trabajar en la Municipalidad de mi ciudad, mi trabajo era mejorar el diseño de su sitio web para poder presentarlo en la Feria del Libro local.

En un principio estaba completamente convencido de que la mejor opción era programar un CMS propio, desde cero, y reemplazar el anterior. Y aunque en el momento por cuestiones de tiempo no se aprobó la idea, comencé igualmente a desarrollarlo por mi cuenta en PHP/MySQL. Mas adelante, al fin, tuve la oportunidad de reemplazar el viejo sistema por el que había estado desarrollando yo durante algunas madrugadas extraoficialmente.

Fue toda una muy buena experiencia, pero en un punto comencé a pensar mas en la practicidad que en mis ganas de tipear código. Así me di cuenta de que todas las funcionalidades en las que estaba invirtiendo tiempo y esfuerzo en desarrollar ya estaban incluidas en cualquier CMS Open Source popular. Es decir; ¿para qué reinventar la rueda?

Pensé en reemplazar mi CMS por WordPress, sin dudas una de las mejores opciones; yo mismo lo he usado para múltiples tipos de sitios y, hablando mal y pronto, se la banca.

Lamentablemente, WordPress no trae incluida la administración de ordenanzas aprobadas por el Honorable Concejo Municipal de una ciudad (sarcásticamente hablando), pero todas estas funcionalidades específicas de un portal municipal pueden ser agregadas como extensiones.

En este sentido WordPress es muy flexible, en nuestro sitio web Municipal se han instalado alrededor de 15 plugins de los cuales 7 fueron programados por mi. Estas porciones de código permiten a los usuarios ejecutar consultas sobre las deudas de sus impuestos, estados de trámites, requisitos para la habilitación de locales, etc. asi como también consultar la legislación aprobada por el Concejo Municipal, boletines legislativos, etc.

Por otro lado, una gran ventaja es la mantención del proyecto. En una oficina de desarrollo, no es lindo comenzar a trabajar y tener que mantener software mal escrito, con loops incomprensibles, y minados de bugs. Por eso, si yo se que no voy a estar siempre en la Municipalidad, me gustaría que cuando me vaya le deje algo prolijo al que venga después de mi. WordPress va a seguir siendo mantenido por miles de personas alrededor del mundo, asi que no hay de qué preocuparse.

Solo algunas entre tantas cosas lindas que tiene el mundo del Software Libre.