17 julio, 2009

Un plan de estudios para la web

He traducido este interesante artículo de Tim Bray ( Web Curriculum ) sobre un plan de estudios basado enteramente en tecnologías web.

Propongo que el World Wide Web sirva también como esquema para estructurar gran parte del currículo académico de informática. Un estudio de la teoría y la práctica de las tecnologías web alcanzaría muchas áreas clave de nuestra disciplina. Es más, hay una forma natural de estructurar ese conocimiento para crear un curso de estudios que cubra varios semestres.

(Un efecto colateral de tal propuesta es que los graduados entrarían en la población activa con una exposición significativa al conjunto de tecnologías que probablemente sería muy valiosa para sus carreras profesionales. Pero ese no es el argumento que estoy defendiendo aquí).

En la siguiente distribución, la numeración de los cursos implica una primera estimación de los niveles y prerequisitos. Ya que nunca he diseñado un currículo y mis propios estudios universitarios han quedado ya décadas atrás, es bastante posible que mis sugerencias respecto al número de cursos y los niveles por semestre necesiten mejorar.

Web 101: Introducción a la arquitectura. Idea-núcleo: Enseñar lo que pasa cuando haces click en un enlace y una página con multimedia y personalizaciones es generada para el usuario.

  • Cobertura: Qué es un navegador y un servidor. Qué son HTML, CSS, HTTP y URIs. Qué son servidores CGI y de aplicacion. Un vistazo inicial a la arquitectura subyacente.
  • Ejercicios de ejemplo: Desplegar un servidor web. Escribir páginas simples HTML/CSS con un editor de textos. Escribir scripts CGI en un lenguaje de alto nivel para producir páginas personalizadas.
Web 210/310/410: Estructuras de datos y algoritmos. Idea-núcleo: El centro clásico del currículo de informática.
  • Cobertura: Todas las cosas habituales. La dimension web viene del uso de la implementación del modelo de objetos de documento (DOM) como ayuda para la docencia.
  • Ejercicios de ejemplo: Construir incrementalmente una implementación del DOM, probablemente en un lenguaje de bajo nivel como C o Java. Una amplia variedad de estructuras de datos y algoritmos importantes puede ser bien usada en dicha implementación.
Web 220: Principios de redes. Idea-núcleo: Visión clásica de lo básico de las redes.
  • Cobertura: Este es un curso directo de redes de ordenadores, haciendo un recorrido convencional de la pila.
  • Ejercicios de ejemplo: La implementación de un pequeño servidor web ligero que acepte conexiones y sirva peticiones de archivos desde su sistema de archivos.
Web 230: Interfícies de usuario. Idea-núcleo: Inspección de temas de UI, pero suponiendo al navegador como plataforma de entrega, para poner el foco en el contenido y no en la tecnología.
  • Cobertura: Principios de usabilidad, diseño de la experiencia de usuario, breve introducción a la tipografía y a problemas de diseño, técnicas de evaluación. En el lado de la implementación, MVC (modelo-vista-controlador).
  • Ejercicios de ejemplo: Construir (en grupos) una interfície web de usuario para un sistema que mantenga las puntuaciones de algún deporte, evaluar su usabilidad y mejorarla.
Web 320: Protocolos de aplicación. Idea-núcleo: las aplicaciones distribuidas están basadas en varios sabores del patrón de intercambio de mensajes. Este sería un recorrido de las opciones.
  • Cobertura: Protocolos de flujo (streaming), protocolos orientados a sesión, protocolos de intercambio de mensajes al estilo HTTP.
  • Ejercicios de ejemplo: implementar porciones seleccionadas de WebDAV, XMPP y AtomPub.
Web 340/440: Persistencia. Idea-núcleo: Estudiar los problemas que rodean el almacenamiento persistente de datos.
  • Cobertura: Sistemas de archivos. Almacenamiento orientado al registro y al byte. Bases de datos relacionales. Bases de datos documentales y tablas de hash distribuidas.
  • Ejercicios de ejemplo: Construir algunas de las piezas de una aplicación como Twitter o Facebook, implementando almacenamiento eficiente y recuperación de diferentes tipos de recursos de información.
Web 350: Parsing - Análisis sintáctico. Idea-núcleo: estudiar métodos para extraer estructuras de entradas de texto.
  • Cobertura: Lo usual, incluyendo gramáticas, autómatas, y otras estrategias de parseo. Representación textual, especialmente Unicode.
  • Ejercicios de ejemplo: Construir parseadores para cabeceras HTTP, para JSON, para XML y para ECMAScript(JavaScript) por ese orden.
Web 351: Diseño de formatos de datos. Idea-núcleo: Estudiar las técnicas y compromisos que aparecen en el diseño de formatos de datos.
  • Cobertura: formatos de datos multimedia (JPG, PNG, vídeo), formatos de datos binarios (ASN.1, buffers de protocolo), formatos de datos textuales (JSON, XML). Compresión.
  • Ejercicios de ejemplo: implementar un lector de PNG, diseñar (en grupo) un lenguaje XML no trivial.
Web 360: Seguridad. Idea-núcleo: estudiar técnicas para implementar programas de ordenador suponiendo la presencia de un gran número de usuarios maliciosos con conocimientos técnicos.
  • Cobertura: introducción a las firmas digitales y tecnologías de encriptación. Análisis de amenazas. Ingeniería social. Virus, gusanos, botnets, y otros villanos.
  • Ejercicios de ejemplo: implementar un ataque de fuerza bruta sobre una tecnología de encriptación obsoleta. Escribir una recomendación sobre cómo algunos exploits criminales con éxito y bien conocidos podrían haber sido evitados.
Web 470: Temas de grandes sistemas distribuidos. Idea-núcleo: estudiar los problemas que aparecen en sistemas demasiado grandes para un solo ordenador.
  • Cobertura: REST, nombrado de objetos (DNS, URIs y otros esquemas de nombrado). Caché. Particionado de cargas de trabajo. Rastreo (crawling) de webs. Programación funcional. Gestión de errores.
  • Ejercicios de ejemplo: Implementar algo que use DNS. Aprender ideas detrás de Erlang y Map/Reduce. Escribir un rastreador (crawler) de web de pequeña escala.
Web 480: Sistemas concurrentes. Idea núcleo: estudiar las opciones para hacer uso de modernas plataformas altamente concurrentes de ordenadores.
  • Cobertura: hilos, procesos, actores, paso de mensajes.
  • Ejercicios de ejemplo: Implementar la infraestructura de paso de mensajes en un lenguaje de "sabor funcional" (Scala, Erlang) y en uno convencional procedimental (Java, Ruby).
¿Qué falta? El currículo web no cubre toda la informática. Aquí hay una lista (sin duda no exhaustiva) sin ningún orden en particular, de temas importantes donde un enfoque académico centrado en web obviamente no sería de ayuda:

  • Gráficos de ordenador.
  • Orientación a objetos.
  • Software en tiempo real.
  • Aritmética y representación numérica.
  • Inteligencia artifical.
  • Arquitectura de sistemas de ordenadores.
  • Análisis de algoritmos.

08 julio, 2009

Google Chrome Operative System (segundo OS de Google)

Empieza a ponerse divertido. Muchos vimos como Android, un sistema operativo abierto dirigido a dispositivos móviles empezaba a ser utilizado por algunos fabricantes de netbooks como alternativa a Windows ante la probabilidad de que se convierta en un estándar para Linux. Google nunca se ha manifestado al respecto, pero es un uso válido dada su licencia abierta.

Pero hoy, Google ha anunciado el nuevo Chrome OS. Un sistema operativo basado exclusivamente en su propio navegador Chrome.


Recordemos que cuando Apple optó por WebKit como motor para su Safari, mucha gente se extraño del movimiento. Aunque ya entonces resultaba apreciablemente más rápido que cualquier otro disponible. Después Google hizo lo mismo con Chrome, mejorado con su motor de JavaScript V8. Una plataforma extremadamente potente que tiene entre sus cualidades el haber empezado de cero y haber repensado muchas de las cosas que damos por sentadas sobre cómo debe ser un navegador.

Con esa misma filosofía, repensar cómo debe ser un sistema operativo, Google anuncia ahora que a mediados de 2010 publicará su projecto como fuente abierta: un sistema operativo ligero dirigido a aquellos que ya pasan cada vez más tiempo en el navegador, cuyo objetivo serán precisamente los netbooks (aunque también podrá ser usado por equipos convencionales) y que hará hincapié en la velocidad, la simplicidad y la seguridad.

Google indica que han estado basándose en las quejas tradicionales de los usuarios: quieren tener acceso al correo electrónico instantáneamente, sin esperar a que arranque el ordenador y pongan en marcha el navegador;  quieren que sus equipos funcionen siempre tan rápido como cuando lo compraron (touché Microsoft); quieren que sus datos estén siempre ahí sin preocuparse de perder el ordenador o de tener que hacer copias de seguridad; y lo más importante: no quieren tener que pasar horas configurando sus equipos para que detecten cada elemento hardware (los odiados drivers) o actualizando el software.

La arquitectura es simple: Chrome corriendo sobre un sistema de ventanas montado sobre un núcleo mínimo Linux. Recordemos que Chrome ya incluye Gears (geolocalización, base de datos local, ...) Por tanto, los desarrolladores sólo deben continuar haciendo lo que ya hacen: usar las tecnologías web disponibles en este momento. Definitivamente, JavaScript se posiciona, pese a los desprecios de muchas comunidades de programadores, como una seria opción de cara al futuro.

Sólo una apreciación: Con este movimiento, Google dispondrá de dos sistemas operativos abiertos basados en Linux y con Chrome sobre ellos. Los conflictos posiblemente acabarán llegando.

Via Ajaxian.

01 julio, 2009

El señor del HTML 5

En CSS Squirrel, Kyle Weems explica el significado de su última viñeta. Como comentaba en un post anterior, Ian Hickson (o Hixie) es la persona que está coordinando el proyecto de redacción del nuevo estándar HTML 5. Sin embargo, Hickson trabaja para Google, lo que evidencia un posible conflicto de intereses.

Muchos de los participantes en la lista de correo acusan a Hickson de seguir una política que puede resumirse con las palabras: Negar, Retrasar, Desechar por llegar tarde.

Aunque un estándar tan importante como el que regirá el comportamiento de todos los navegadores (la cursiva es por Internet Explorer) durante los próximos años debería estar gestionado por un comité, el poder de decisión se centra en una única persona que se ha erigido como editor, y cuyas decisiones vienen muchas veces respaldadas por datos que, pese a proceder de Google, no son públicos ni se tiene la intención de que lo sean.

Estamos hablando de un esfuerzo de repercusiones casi inimaginables: miles de millones de páginas web escritas con este estándar, accesibilidad para usuarios con discapacidades, censura en países sin democracia, compartición de documentos multimedia sin la dependencia de plugins cerrados (flash)...

Estas críticas nacen de lo absurdo que resulta que una única persona sustituya a un comité de expertos, sino que además, y sin resultar una crítica a su capacidad que parece más que sobrada, el proceso -en el que muchas propuestas interesantes son rechazadas sin más o se hace mucho más caso a esos datos "secretos" que a la opinión de los expertos en cada área- dista mucho de ser transparente.

En este contexto no resulta extraño que se empiecen a alzar voces que pongan en duda la capacidad de Hickson para generar un HTML5 que cumpla con las expectativas de todos y no sólo las de Google, más cuando las críticas por el trato con los participantes (sean individuos, expertos o grupos de trabajo del W3C) no dejan de aumentar.

En esta entrevista a Hickson, sus palabras llaman poderosamente la atención:

Si respondo a comentarios sobre algo que acabo de publicar, me encuentro a veces que tengo un añadido para esa sección, por lo que si alguien sugiere un cambio total, no suele gustarme mucho esa idea. Pero si ha transcurrido un tiempo, encuentro que mi añadido ya no tiene tanta vigencia, y estoy ansioso por cambiar mi vieja estúpida idea por esa otra mejor.
Así que tengo que juzgar sobre lo que vale la pena añadir y lo que no, y eso es duro

Últimos links en indiza.com