Otro argumento por Pharo

Esta mañana estaba leyendo la lista de correo de Pharo y encontré un mail de Stef. Duccase sobre la visión de Pharo, transcribo algunos de los párrafos que me parecen importantes.

“Some days ago we were chatting with igor and he made an interesting remark about a kind of hidden philosophy
behind pharo: the idea that we systematically want to make the system better.
In fact I realized that what we are doing is to make a system nice, robust and powerful so that everybody can use
to realize their goals. But we want to have a system where not only smart guys can manage to do something with it but also less talented people…”

“…I want a system that let me learn from itself. I think that lot of things fall naturally in place from this vision (documentation, oo practices – not having car inheriting from wheel, tests comments, adequate abstractions, modularity). I want a system that everybody can nicely build his own software.
So in short I want pharo to be like a nice garden with greenhouses for building new garden with tools versus a jungle where only skilled adventurers can make it through.”

Totalmente de acuerdo. Y esto me lleva a pretuntarte: ¿sabes tu cual es la visión que tienen los createdores de tu lenguaje de desarrollo preferido?

¿Por qué Pharo?

A la hora de trabajar con Smalltalk uno debe elegir algún dialecto al igual que al trabajar con Java uno debe de elegir algún IDE. El tema con Smalltalk es que el dialecto es algo mucho más relevante que el IDE, pues en la mayoría de los casos el dialecto determina no solo el IDE a utilizar sino que además determina entre otras la máquina virtual en la cual se ejecutará nuestra aplicación. En la actualidad existe una interesente variedad de dialectos entre los que se destacan: VisualWorks, Visual Age, GNU-Smalltalk, Dolphin, Squeak y Pharo.

Mi elección personal es Pharo, y en los siguientes párrafos voy exponer mis motivos.

Licencia

Pharo es gratuito y de código abierto, en particular es desarrollado bajo licencia MIT, lo cual otorga una gran libertad.

Comunidad

Sin duda es una de las comunidades más activas y es definitivamente la más activa de las que participo. Por la lista del proyecto pasan más de 60 mails diarios. Para una herramienta de desarrollo (sea IDE, framework, compilador, etc) la comunidad es clave y más aún en el caso de iniciativas código abierto. Adicionalmente es una comunidad muy abierta, todo el mundo puede commitear fixes y todas la preguntas son contestadas en la lista de correo.

Experiencia de usuario

Comenzando por la super cool interface de usuario, el logo RE-copado y siguiendo por las infinitas posibilidades de personalización que ofrece, no conozco otro IDE tan “feliz para el programador” (es cierto, este argumento es muuyyyy subjetivo, pero no deja de ser un argumento).

¿y todo es color de rosa?

Bueno, casi. Hay algunas funcionalidades que por momentos se tornan un poquitin inestable, pero creo que se debe a todas las yerbas particulares que le he agregado a mi imagen.

¡¡¡Aguante Pharo!!!

Propuesta de trabajo profesional: plataforma de identidad unificada

En primer lugar debo dar parte de los créditos por esta idea a SebaD y FedeBo, gracias muchachos!

Esta es una problemática muy común de las organizaciones en la actualidad y como tal es una temática excelente para un trabajo profesional. Voy a dar una idea abstracta de muy alto nivel.

Sin ir más lejos tomemos como organización ejemplo la misma Fiuba y paremonos en el lugar del alumno. Como alumnos utilizamos varios sistemas provistos por la facultad como por ejemplo: el correo eletrónico (@fi.uba.ar), el sistema de inscripción a materias, y el repositorio personal (FTP). Para cada uno de estos sistemas, cada alumno tiene credenciales de acceso distintas.

Bien, la idea del trabajo es resolver esta problemática de manera tal que los alumnos puedan usar las mismas credenciales para acceder a los N sistemas de la facultad y contar con una expeciencia de Single sign-on. Obviamente la solución debería hacer de algunos de los procolos existentes para dicha problemática.

Si bien mi ejemplo está basado en Fiuba el mismo aplica a cualquier organización.

En cuanto al alcance del trabajo, debería contemplarse:

  • Desarrollo de la solución
    • Análisis de la problemática
    • Estudio de posibles soluciones y tecnologias disponibles
    • Diseño de la solución
    • Construcción de la solución
  • Puesta en marcha
    • Guia de despligue (y despliegue propiamente dicho, de ser posible)
    • Plan de migración y comunicación a usuarios
    • Plan de backup
    • Guia para la integración de nuevas aplicaciones
    • Guia de operaciones

Como siempre, si hay algún interesado contacteme por mail y los charlamos con mayor detalle.

Propuesta de trabajo profesional: plataforma para materias de programación

En estos últimos dias he estado trabajando con la infraestructura de Algo3. Actualmente esta infraestructura está constituida por un conjunto de herramientas online “atadas con alambre”. Esto me parece constituye una interesante oportunidad para aquellos alumnos de Fiuba en busca de un tema de trabajo profesional. A continuación voy a describir la visión de lo que como docente que gustaría tener como infraestructura.

En primer lugar un aclaración de criterio: como docente mi objetivo es que los alumnos aprendan y para ello suelo hacer uso de todas las herramientas que tengo a mi alcance. Hecha esta aclaración, comencemos con algunos requerimientos de muy alto nivel:

  • Quiero contar con un website al que se acceda desde el website de la facultad con la url estándar para materias. Esto responde a una cuestion de imagen institucional. Quiero que el website muestre las últimas entradas de twiteer de la cuenta de la materia.
  • Quiero contar con un sistema de versionamiento que me permita administrar todo el contenido que vamos generando en la cátedra mientras lo vamos generando (siendo directo quiero un SVN o similar con acceso solo para docentes).
  • Quiero contar con un builder server que me permita implementar integración continua con código almacenado en distintos repositorios.
  • Quiero contar con una lista de correo para los alumnos
  • Quiero contar con una lista de correo para los docentes
  • Quiero una aplicación para administrar las notas de los alumnos a lo largo del cuatrismestre.
  • Por último quiero una aplicación para poder administrar en forma unificada todo lo anteriormente mencionado.

Ahora algunos requerimientos a nivel de implementación.

  • No es necesario que todo esto sea construido, pueden utilizarse aplicaciones existentes, pero deben ser de uso gratuito.
  • En caso de construirse algo, debe ser bajo licencia open source
  • El acceso al sistema unificado debe funcionar con federando con alguno de los protocolos existentes (SAML, OpenID, etc)
  • Toda la información manejada por el sistema debe guardarse históricamente de manera de poder acceder en línea al menos a registros de 5 cuatrimestres anteriores.

Bueno, creo que esto está bien como idea preliminar. Algunos de los puntos mencionados ya cuentan con una implementación provista por la facultad y tal vez algunos otros también puedan ser provistos por la facultad, pero desconozco si actualmente si Fiuba tiene la posibilidad de brindarlos. Una aclaración más: nada de esto está validado formalmente con las autoridades de la facultad, es solo una idea mia que me parece puede resultar interesante.

Si hay algún interesado no dude en contactarme.

Game development, episode #1: the gameloop

I suspect that most of the readers of this blog are programmers, so I must start by saying that game development is a broad activity that includes several areas and not only the programming. Of course that I am a programmer so the focus on this series will be programming but I will also try to provide some resources related to the other activities. So, after this brief comment it’s time to switch to the main topic of this post: the gameloop.

From the programming point of view the main component of any game is the gameloop. This loop performs several tasks that can vary depending on the platform your game run on but conceptually these tasks can be summarized in 2:  execute game logic and drawing.

Of course we can drill down into these tasks and get a more detailed game loop like the following:

while ( not gameover and user not exits)
{
  process user input
  execute AI
  resolve collisions
  draw graphics
  play sounds
}

The gameloop is main component of any game but not the only one, there are some other components that are not part of the game loop: stuff like the game menu and the settings screen among others.

Sobre el mercado offshore de desarrollo de software y otras yerbas

Hace unos dias por la lista de docente de algo3 me llegó el link a este artículo sobre la industrialización del software.

Comparto varios de los puntos expuestos pero quisiera agregar 2 comentarios al respecto.

Me da la impresion que el autor piensa que TODOS los trabajores en sistemas tienen que ser ingenieros (o contar con una formacion universitaria de 5+ años) lo cual para mi es una gran falacia. Es como si pretendieramos que para construir edificios TODOS fueran ingenieros civiles. Perfectamente se puede construir software respetable con gente de una formación más corta, por ejemplo la Universidad Nacional de Quilmes dicta una Tecnicatura Universitaria en Programación Informática, la cual tiene una duración de  3 años.
En lo que respecta a la situación del mercado y la posibilidades como centro de desarrollo offshore, entiendo que en Argentina el contexto es distinto:
  • Desde Argentina tenemos la ventaja de estar en la misma zona horaria que USA, cosa que no ocurre con Europa ni Asia
  • Culturalmente estamos mucho más cercanos a USA que Asia.
  • A diferencia de lo que algunos puedan pensar creo que a nivel costos no representamos una alternativa interesante. Creo que ni remotamente podemos competir con India, y en algunos casos tampoco con Europa. Donde trabajo actualmente exportamos más del 90% de nuestra producción a USA y manejamos precios internacionales con lo cual NO somos “baratos”.
  • De más está decir que creo que técnicamente no tenemos nada que envidiar ni a Europa ni a Asia.
Resumiendo: si bien India puede ofrecer mejores precios, desde Argentina tenemos la ventaja de la cercania cultural y del horario.  Y en cuanto a Europa también tenemos la ventaja del horario y en algunos casos del precio.
Entonces, si queremos “ganar” el mercado offshore, no podemos descuidar la calidad, ese el valor agregado que nos puede posicionar mejor respecto de la competencia internacional.

Juan @ AgilesBaires

¿Llegará el día en que escuche a una presentación de Juan y no aprenda nada? No lo sé, pero lo veo difícil. El martes tuve agrado de asistir al encuentro mensual de comunidad Agiles@ Buenos Aires donde Juan dió una presentación titulada: ¿Existe “la mejor manera” de probar?. Simplemente excelente: no solo la presentación fue muy buena sino que también me resultó enriquecedora la ronda de preguntas y respuestas.

Otro punto para destacar es la importante cantidad de asistentes (muchos de ellos primerizos en estos encuentros) sobre considerando que estamos en pleno período de vacaciones.

La sesión fue grabada, con lo cual dentro de un tiempo seguramente este disponible en el blog de Juan o en el sitio de comunidad, pero mientras tanto pueden leer este blogpost de Juan que resume lo presentado.

Aquí les dejo algunas fotos del evento.