lunes, 18 de abril de 2011

Rails 3.1 incluirá jQuery, CoffeeScript y Saas

Ruby on Rails

La próxima entrega de Ruby on Rails, la versión 3.1, incluirá por omisión estas librerías como parte de todo nuevo proyecto.

Por supuesto que ya ha habido mucha discusión al respecto en la comunidad Rails, pero como siempre, la decisión está tomada por DHH y sus secuaces, y al fin y al cabo, cambiar los defaults no es complejo (basta alterar un par de líneas en el gemfile).

Pero repasemos un poco de que se tratan estos cambios:

Hasta ahora la librería estándar de Javascript que Rails agregaba por omisión era Prototype, pero como la mayor parte de la gente hoy día utiliza jQuery (lo que demuestra que no es tan complejo cambiar estas cosas), decidieron hacer oficial el cambio.

Saas

Los otros cambios son más dramáticos para algunos, y es la inclusión por omisión de CoffeScript y Saas.

Sobre CoffeeScript escribí un post hace poco, así que voy a evitar repetirme, pero básicamente es una sintaxis simplificada de Javascript, que facilita escribir la parte cliente de aplicaciones web (aunque también se usa a veces del lado del servidor, en conjunto con Node.js).

Saas, por su parte, es una sintaxis alternativa para hojas de estilo en cascada (CSS).

Históricamente tuvo dos sintaxis, la original es la indentada (con archivos de extensión .saas), inspirada en el lenguaje de templates Haml (también muy difundido en el ambiente Ruby), y en lugar de usar llaves y punto y comas para delimitar bloques, se basa en indentación, como en este ejemplo:

#main
  color: blue
  font-size: 0.3em

  a
    font:
      weight: bold
      family: serif
    &:hover
      background-color: #eee

La nueva sintaxis se llama SCSS y es un superset de la sintaxis CSS3 que utiliza archivos de extensión .scss. Esta es la que impulsan desde Rails, y en este caso no se remueven las llaves y punto y comas, sino que el foco está en mejorar las posibilidades de definición, por ejemplo, soportando anidamiento de estilos:

#navbar {
  width: 80%;
  height: 23px;

  ul { list-style-type: none; }
  li {
    float: left;
    a { font-weight: bold; }
  }
}

Y también variables, como en:

$main-color: #ce4dd6;
$style: solid;

#navbar {
  border-bottom: {
    color: $main-color;
    style: $style;
  }
}

a {
  color: $main-color;
  &:hover { border-bottom: $style 1px; }
}

Pero también hay soporte para mixins (a la Ruby), herencia de selectores, y más características.

Al igual que en el caso de CoffeeScript, Saas va a estar integrado al framework, de manera que nosotros editamos los archivos en estos lenguajes y automáticamente se generan sus equivalentes .js y .css sin mayores inconvenientes. En ambos casos, llegado el momento de tener que depurar el código directamente en el navegador (utilizando FireBug o herramientas similares) la distancia entre los lenguajes reales y estas sintaxis alternativas nunca es tan grande como para convertirse en un problema.

 

jueves, 14 de abril de 2011

Node.js, Ruby y Python en... Windows Azure? (video)

smarx

Esta semana esta desarrollándose en Las Vegas, EEUU, la conferencia MIX11, en la que Microsoft realiza gran parte de sus anuncios para desarrolladores y diseñadores. A diferencia de PDC, que es la conferencia general para desarrolladores, MIX se orienta específicamente al desarrollo web o de aplicaciones cliente en general.

Como siempre, el criterio se amplía y aparecen, además de muchas presentaciones y anuncios esperables, algunas sesiones sumamente interesantes, como ésta de Steve Marx, uno de los personajes más innovadores dentro de Microsoft en los últimos tiempos.

En esta sesión, @smarx se dedica a subvertir Windows Azure, la plataforma de cloud computing, de la que él es el estratega técnico, para ejecutar sobre ella Node.js, Ruby, Python y también cosas como Cassandra o Tornado.

Veamos porque Steve me parece innovador:

Diagramas de smarx

  • No usa Powerpoint (y todavía no lo echaron): estos son sus slides de la charla (puro html+css)
  • Todos estos ejemplos están disponibles en su cuenta de GitHub
  • De hecho, tiene construido un workflow que hace el deploy en Azure de algunas aplicaciones después del git push
  • Sus diagramas son muy buenos (sólo comparables con los de @eugenio_pace, como se aprecia a la derecha).
  • Y fundamentalmente, entiende y divulga la necesidad de soportar múltiples plataformas y alternativas para que Azure sea un ambiente exitoso, en contra del discurso preponderante de que se lo utilice solo en .NET o PHP.

En la sesión se muestra cómo utilizar estas herramientas sobre la infraestructura pelada de Azure, sin utilizar ni el SDK, aprovechando algunas de las características que se habilitaron recientemente a este fin como:

  • Privilegios elevamos, para poder correr procesos como admin
  • Startup tasks: tareas que se pueden ejecutar antes de que un rol o instancia arranque
  • Control completo del IIS, incluyendo proxy reverso y FastCGI

Les dejo el video (en inglés) por si quieren entender un poco más el tema, especialmente los motivos por los cuales alguien querría hacer esto en Azure en lugar de otras plataformas. Si por alguna razón no se ve el video en este post (los mecanismos de incrustación de Channel 9 no parecen muy estables) pueden ver la sesión en la página original.

domingo, 10 de abril de 2011

Mi pequeño homenaje

Tal vez notaron que los últimos días hubo pocos posts en este blog, en el que en general publico algo diariamente, de lunes a viernes.

El hueco se debe a que mi padre falleció la semana pasada, y obviamente mis prioridades no pasaron por aquí. Pero hoy retomo con un post que pretende ser mi pequeño homenaje para él, que fue quien incluyó en mi carrera técnica, y me acercó, de alguna manera, al mundo del software. Más allá del homenaje, espero que algunos lectores se sientan identificados, tal vez, con alguna anécdota que les recuerde su propio camino.

Mi padre fue tripulante de vuelo en Aerolíneas Argentinas por décadas. Mientras estudiaba para piloto, empezó a trabajar como auxiliar de vuelo, más tarde comisario de a bordo, hasta que logró pasar a un puesto de cabina con un puesto que hoy ya no existe: navegador / radio-operador (navro, en la vieja jerga aeronáutica).

Algunas de las primeras cosas que cautivaron mi imaginación por la tecnología fueron verlo trazando rutas sobre mapas gigantescos (desplegados eran como una sábana de dos plazas) utilizando compases y transportadores muy complejos, o revisar los enormes manuales de vuelo de los aviones, que en esa época los tripulantes llevaban encarpetados en pesadas valijas junto con sus instrumentos.

Pero el primer empujón real a lo que se convertiría en mi carrera fue cuando me regaló, traído en uno de sus viajes a EEUU, un kit de electrónica con componentes pre-armados, para usar sin soldador, mordiendo el extremo de los cables en pequeños resortes que conectaban a las patas de los diodos, transistores, resistencias, y demás componentes.

Hace mucho que perdí el rastro de aquel kit, y no conservo ninguna foto, pero encontré esta foto de un kit que es prácticamente idéntico al mio:

160 in one Electronic Kit

La caja de madera tenía una lamparita, capacitores, resistencias, diodos y transistores, un ferrite con bovina (para captar radio), algunas celdas solares, un potenciometro, un display de leds (para un único dígito), un parlante, y zócalos para baterías de distinto voltaje, entre otras cosas.

Con este kit aprendí, a fines de los '70, a hacer un flip-flop, algunas compuertas lógicas, y cosas más triviales como una radio, un sensor de luz y otros proyectos básicos. Pero bastó para mostrarme la base de la electrónica analógica y poner un tímido pie en la digital.

Como yo estaba en la escuela primaria y mi inglés era muy precario, mi viejo se tomó el trabajo de traducir todo el manual que se ve en la foto, con los 160 proyectos mencionados (algunos de más de una página) escribiéndolos en una máquina Olivetti portátil que llevaba y traía en cada vuelo durante un mes o dos, dedicando todo su tiempo libre a mi curiosidad.

Este juego me decidió a entrar en un colegio secundario con especialidad en electrónica, donde aunque no aprendí mucho del tema realmente, conocí a otros proto-hackers de los que me hice amigo y con quienes empezamos a molestar en los primeros negocios que traían computadoras personales al país (mucho antes de la IBM PC), convenciéndolos de que nos dejaran usarlas un poco a cambio de hacer demostraciones para los clientes interesados, ya que usualmente nadie sabía como usarlas.

La primer computadora que fue mía (al menos un tercio) también la financió mi papá. La compramos con otros dos amigos y la teníamos una semana cada uno, pero él nos desafió a que teníamos que mostrarle lo que aprendíamos a nuestros padres, más allá de los juegos, para asegurar que no perdiéramos oportunidad de aprender.

Más Allá de la Ciencia FicciónTambién fue el viejo quien me heredó su colección de revistas Mas Allá (la primer revista argentina de ciencia ficción, editada a mediados de los '50 y que él guardó -sin saberlo- para encender otra llamita en mi cabeza, que entró con estos tomos en el mundo de la ciencia ficción, que es también responsable de gran parte de las ideas que me llevaron a dedicarme a la programación.

El resto es historia, pero todo empezó con esos empujones iniciales de mi querido viejo, con quien ya no voy a poder charlar de nuestros interés comunes, y a quien sólo me queda extrañar.