Interesante curso de Ingenieria de Software

La semana pasada empecé un curso online ofrecido por la Universidad de Standford en forma gratuita. El nombre del curso es Software Engineering for Software as a Service. El mismo tiene una duración de 5 semanas y es dictado por dos profesores de Berkeley: Armando Fox y Dave Patterson. El curso tiene foco en métodos agiles y la parte técnica está basada en Ruby on Rails.

La dinámica del curso consiste en clases teóricas en formato de video de 10 minutos de duración en promedio.  Al mismo tiempo hay un libro (pago, cuesta unos 10 dólares) escrito por los profesores del curso. La plataforma onlien también cuenta varios foros de discusión. En cuanto al aspecto práctico, hay 4 tareas de programación con un timeframe de 1 semana y por otro lado tambien hay 3 Quiz a lo largo de todo el curso.Según los profesores, alumnos anteriores han reportado una carga de trabajo semanal de entre 5 y 10 horas para completar el curso.

Luego de completar la primer semana, estoy muy entusiasmado, hasta el momento nada nuevo para mi, pero a pesar de ello me gusta la forma en que estan presentados los temas.

No estoy seguro si aún es posible sumarse al curso, pero de todas formas los video son de acceso público.

Les dejo el link al curso: https://www.coursera.org/saas.

¡Que lo disfruten!

Sobre C# y Ruby

Esta es la continuación del post que publiqué ayer, pero que en realidad es más bien una precuela.

Resulta que la semana pasada estaba hablando con unos colegas de Algo3 sobre tecnologia y comenté mi amistosa incursión en Ruby. Ante esto, uno de mis colegas me tildó de panquequearme, pues la mayor parte de mi carrera he argumentando a favor de C# y la plataforma .NET en general.  Hoy por hoy y para una gran cantidad de aplicaciones prefiero inclinarme hacia Ruby, no porque me parezca más apropiado sino porque me siento más cómodo (incluso a pesar de conocer mucho menos). Pero esto no me convierte en panquete, pues mi cambio de opinion no fue ni reiterado ni en corto plazo de tiempo.

Recuerdo que la primera vez que me acerqué a Ruby fue durante 2006, cuando trabajando en Snoop me tocó participar en un proyecto en el cual el cliente nos pedia definir su plataforma y nos había pedido explícitamente evaluar .NET, Java y Ruby. Al cabo de 3 semanas de trabajo nuestra recomendación fue .NET. Pero bastante han cambio estas tecnologias desde aquel 2006 hasta la actualidad (¡pasaron 6 años!).

Ahora hablando un poco sobre el título de este post, creo si bien ambos lenguajes a simple vista parecen bastante distintos, tienen varias cosas en comun en cuanto a la caraterísticas que soportan. Sin duda la diferencia más distintiva es el hecho de que C# es de tipado estático y Ruby de tipado dinámico. Esto implica que en el caso de C# es necesario realizar una compilación explícita antes de pedirle a la maquina virtual que ejecute nuestro programa. Por otro lado, Ruby incorpora varias cosas de Smalltalk (metaclases, bloques, etc) lo cual me resulta muy feliz.

Más allá de las bondades del lenguaje, debo admitir que me he sorprendido a mi mismo, pues nunca crei que pudiera programar con un editor de texto (gedit) luego de haber trabajado por tanto tiempo con Visual Studio y Eclipse. Cuando trabajo en ruby codeo con gedit y tengo dos terminales abiertas, una para hacer el build y otra con irb (el interprete interactivo de ruby) para probar cosas del lenguje, pues aun no estoy suficientemente familiarizado. Cuando esporáricamente tengo que levantar Visual Studio o Eclipse, me deprimo mal, ambos entornos tardan una eternidad en levantar (a pesar de que tengo 4 GB de memoria). Y ni hablar cuando quiero compilar una solucion y correr las pruebas con visual studio.

Más allá de mi opinion (totalmente subjetivas) y de los gustos particulares de cada uno, creo que es importante que todo estudiante/profesional de sistemas haga una experiencia en ambos mundos: el corporativo (C#/Java) y el open source (ruby/python/smalltalk).

Por lo dicho en el post anterior, esa calificación no me aplica pues mi cambio de opinion

hace algunos años habiaal encarar un proyecto había tenido que elegir entre .Net y Ruby y en aquel momento habia elegido C# practicamente sin dudarlo (pero ojo, había investigado Ruby)

Cambiar de opinion no siempre es «panquequearse»

Una conocida frase dice «Se dió vuelta como un panqueque» y de ahí el término «panquequearse».  Esta frase suele utilizarse para hacer referencia a personas que cambian radicalmente de posición respecto a un tema. La analogia con el panqueque me parece bien, pero creo que no siempre se la interpreta correctamente. Paso a explicar.

La particularidad de la «dada vuelta» del panqueque es que ocurre reiteradas veces y en un breve lapso de tiempo. Entonces para que una persona sea etiquetada con la frase en cuestión deberia ocurrir que que dicha persona cambie de opinion varias veces en un breve lapso. Siguiendo esta línea de pensamiento, creo que uno de los mejores ejemplo de panquequeda en la actualidad lo constituyen (algunos) periodistas deportivos: Si Boca gana Riquelmente es un el mejor, si Boca no gana (lo cual ocurre la semana siguiente), Riquelme es un desastre. Como diria EL Diego, esos periodistas son los mismo que le toman la leche al gato y le roban la limosna al ciego. (ups! me fuí de tema)

Por otro lado, cambiar de opinión es algo sano en un punto, pues siginifica en muchos casos un aprendizaje, ¿acaso uno no cambia de opinion muchas veces luego de  aprender una lección?.

Este post ya se hizo demasiado largo para mi gusto, asi que corto aqui y en el siguiente post les cuento  que fue lo que me llevó a escribir esto.

Continuará…

El solo hecho de que una persona cambie de opinión (por más drástico que sea el cambio) no la «convierte en un panqueque»,

Acceso a ACM para gente Fiuba

ACM (Association for Computing Machinery) es una organización que nuclea profesionales y científicos de la computación y «colabora»* en la difusión de conocimiento en este área. En este sentido la ACM tiene una seria de publicaciones periódicas entre las que se destaca la revista Communications of ACM, que ha sido portadora de famosos artículos como GoTo Statement Considered Harmful de Dijkstra.

La buena noticia es que ahora los alumnos de fiuba pueden acceder a los recursos de ACM en forma totalmente gratuita. Para ello simplemente tienen que configurar sus exploradores para usar el proxy de revistas de fiuba**. Para conectar a este proxy es necesario contar con una cuenta de correo de fiuba (@fi.uba.ar).

¡Que lo disfruten!

* Colabora es una forma de decir, pues si bien ACM concentra muchas publicaciones en la denominada ACM Digital Library, el acceso a la misma es restringido.

** No publico la dirección del proxy por cuestiones de seguridad, los interesados pueden contactarme en privado o bien contactar directamente a soporte Fiuba.

Agilistas: BASTA de tomarle la leche al gato

Hoy comencé a tomar un curso sobre ingeniería de software y una vez más me encontré con Agile vs. Waterfall. Basta por favor, como dice El Diego esto es como tomarle la leche al gato o robarle la limosna al ciego. Ojo, hacer la comparacion no está mal, lo que me parece mal es que se pretenda explicar agile comparandolo contra waterfall. Y le pegan a waterfall, una y otra vez y otra vez. ¿Porque no hacer una comparación de Agile vs Métodos orientados al plan? ¿Será que la gente aún no lo tiene claro? No sé, no entiendo, pero a esta altura escuchar gente hablando mal de waterfall me empieza a sonar molesto.

Hago un pedido a los agilista: por favor, cuando quieran presentar agile busquen algún otro mecanismo que no sea pegarle a waterfall.

Herramientas de oficina en la nube

Un de los utilitarios que aún no logré encontrar a gusto en Ubuntu es un editor de diagramas. He probado varios (Dia incluido) pero por una u otra cosa, ninguno me vino bien. Por eso celebré cuando encontré Gliffy, una aplicación web para hacer diagramas. Simplemente excelente, soporta casi todos los mismos diagramas que Visio (organigrama, red, uml, flujos, etc.).

Al igual que Prezzi, es una aplicación Flash (por si no lo conocen, Prezi es una herramienta para realizar presentaciones, funcionalmente es un competidor/reemplazo de PowePoint, pero tiene un enfoque diferente, muy recomendado).

Un detalle no menor de Gliffy es que no es gratuito, ofrece un trail gratuito por 30 dias (que es lo que estoy usando actualmente) y luego tiene un costo de alrededor de 5 dólares mensuales por cuenta.

Uruguay 2012

Con este título, esto bien podría tratarse de un evento, pero no. No es un evento sino simplemente el destino de mis vacaciones. No es que pretenda contar mis travesias vacacionales, sino que quiero compartir un fenómeno socio-cultural que me ha deslumbrado: El carnaval uruguayo. El carnaval uruguayo si bien guarda ciertas similitudes con el carnaval de argentina, la realidad es que tiene una carga social mucho más importante.

El carnaval uruguayo se desarrolla principalmente en los denominados tablados, que no son más que escenarios populares (clubes, parques, anfiteatros, etc.) donde noche tras noche se presentan las agrupaciones. Cada noche, cada tablado recibe entre 4 y 6 agrupaciones cada una de las cuales realiza una presentación de aproximadamente 40 minutos. Al mismo tiempo cada agrupación recorre entre 2 y 4 tablados por noche. Cada temporada, cada agrupación prepara un show que va presentando a lo largo de todo el carnaval en fragmentos de 40 minutos (aprox), de manera que no todos los shows son iguales.

Hay un tablado particular llamado Teatro de Verano, en cual las agrupaciones compiten ante un jurado organizados en distintas categorias.

Existen 5 categorias de agrupaciones: negros y lúbolos, murgas, parodistas, humoristas y revistas. No voy a entrar en la descripción de cada una (para ello está wikipedia), sino que voy a dar mi opinion. Muy, muy lejos, lo más interesante son las murgas. Una murga es un agrupación de entre 14 y 17 personas que conforman un grupo vocal acompañado por un bombo, un redoblante y platillos. Entonan composiciones que tratan sobre los hechos socialmente relevantes del último año y no se privan de dar sus opiniones. El contenido social/político en las composiciones de la murga es lo que marca la mayor diferencia entre el carnaval uruguayo y el argentino.

Entre las murgas más conocidas podemos mencionar Agarrate Catalina, Falta y Resto y Curtidores de Hongos.

Otro elemento destacado en el carnaval uruguayo son las Llamadas. Las llamadas son un desfile de agrupaciones similares a lo que conocemos como comparsas. Cada agrupación cuenta con un conjunto de personas que van bailando y una cuerda de tambores. Si bien esto suena muy similar a las comparsas argentinas, la principal diferencia radica en el foco de atracción: mientras que en las comparsas argentinas el foco muchas veces pasa por las bailarinas y los disfraces, en las llamadas el punto más vistoso pasa por la cuerda de tambores.

A mi humilde parecer el carnaval uruguayo no es solo un espectaculo muy vistoso sino también un fenómeno social muy interesante el cual recomiendo presenciar en algún momento.

Ubuntu update

Técnicamente no es updated, sino que simplemente decidí reemplazar mi ubuntu de 64 bits por uno de 32 bits debido a que no estaba contento con el rendimiento de mi máquina. Entonces me bajé el ISO correspondiente a 11.04, lo «quemé» en un pendrive y pisé mi antigua instalación. Luego de haber completado todo el setup, noto una leve mejora en el desempeño de mi máquina, pero nada demasiado relevante.

Les paso a contar ahora las yerbas complementarias que instalé una vez finalizada la instalación del sistema base.

Primero actualicé los repositorios utilizados por apt-get

sudo apt-get update

Lo primero a instalar es Gnome-Do una aplicación que permite lanzar la ejecución de un programa tipeando su nombre en un ventana de dialogo.

sudo apt-get install gnome-do

Continuando con los fundamentales, el siguientes paso fue instalar una extension del  explorador Nautilus para tener un menú contextual para abrir una teminal.

sudo apt-get install nautilus-open-terminal

A mi me gustan la fuentes de Microsoft, entonces:

sudo apt-get install msttcorefonts

Un utilitario infaltable es el Gimp:

sudo apt-get install gimp 

El siguiente paso es instalar Chrome, para lo cual seguí el procedimiento sugerido por Google.

Momento de instalar algunos utilitarios que funcionan como add-ons de Firefox: FireBug y FireFTP.

Llega la hora de las herramientas de desarrollo. Comenzado por Java aparece la diyuntiva de si instalar la version OpenJDK o la de Oracle. En teoría ambas siguen la misma especificación, pero la realidad es que hay reportadas menores diferencias. La buena noticia es que ambas versiones pueden convivir. Por una cuestión de simplicidad instalé OpenJDK que se instala fácilmente via apt-get

sudo apt-get install openjdk-6-jdk

Luego bajé un Eclipse classic de la página de Eclipse.

El siguiente items es el entorno Ruby, para cuya instalación me baso en el post que escribí hace un par de semanas.

Para Pharo, bajé el Zip correspondiente con la última versión de la máquina virtual y restauré mi imagen favorita desde mi pendrive.

Bien, estoy es todo para comenzar a trabajar.

Artefactos deprecados

Estaba en casa  haciendo un poco de limpieza y encontré ciertos artefactos deprecados en la actualidad, pero de uso muy común años atrás.

Lo primero que encontré fueron un par de cajas de diskettes de 5 y un cuarto, con software de distinta índole, en su gran mayoria utilitarios de DOS. Los mismos los usaba en mi primera computadora: una PC 286 de 28 Mhz con 1 mega de memoria y MS-DOS 5. No estoy seguro, pero calculo que seria año 1990, pues recuerdo pasar tardes enteras jugando a un juego de futbol llamado Italia 90. Otros clásicos de esa época eran: el Carmen San Diego, el Street Road, el Double Dragon, un utilitario llamado Print Master y el clásico Norton Commander.

Lo siguiente en sacar del placard fueron 3 cajas de diskettes de 3 y medio. Al abrirlas me encuentré con los 30 diskettes de instalación de Windows 95. ¡30 diskettes, que animalada!. Resulta que mi mamá había comprado una notebook Toshiba Satellite 100, un Pentium de 75 Mhz, que aún funciona y está guardada en algún cajón de la casa de mi mamá. Dicha máquina ya venia con el sistema operativo instalado pero traia un programa para hacer el resguardo del sistema y también las 30 etiquetas para los correspondientes discos.

Finalmente me encontré con la tapa de la calculadora científica que utilicé durante los primeros años de mi carrera (1998-2002 apróximadamente). Lo curioso es que solo estaba la tapa, de la calculadora, ni rastro. Pero ojo, que esta tapa en particular tiene un valor adicional, pues en su interior tiene anotado prolijamente un conjunto de fórmulas extremadamente útiles para el estudiante de ciencias.