Website Performance Tools

During these days we (project A2 team) have been working on this topic. We are working on training material about website performance, so we had to review some tools to measure performance.
Below is a list of tools we have reviewed during the last week.

  • FireBug: is a very popular FireFox add-on for allowing to edit, debug, and monitor CSS, HTML, and JavaScript, but it also provides lower level information such as http headers and others.
  • YSlow: is a FireFox/FireBug add-on developed by Yahoo! It analyzes and qualifies web pages from A to F suggesting ways to improve their performance based on a set of rules for high performance web pages. The reports it generates are very nice.
  • Page Speed: is a FireFox/FireBug add-on developed by Google. It performs several tests on web pages that are based on a set of best practices known to enhance web page performance. A score is provided for each page as well as helpful suggestions on how to improve its performance.
  • MSFast: is a browser plugin that help developers to improve their code performance by capturing and measuring possible bottlenecks on their web pages. It has been developed by MySpace.com and currently supports Internet Explorer.
  • dynaTrace: It integrates with Internet Explorer and allows you to diagnose and prevent AJAX performance issues.
  • Visual Round Trip Analyzer: is a standalone application that examines the communications protocol, identifying the causes of excessive round-trips, and recommending solutions. It is browser-independent. You open the tool and it starts recording what happen at network level. Then you browse your website and finally stop the recording. The tool helps you analyze what have happened.

There are some more tools we have reviewed but these are in my opinion the most interesting. You might be wondering why I didn’t mentioned Fiddler. The reason is that Fiddler does not provide any suggestions, it’s a passive tool: just captures the network traffic because its focus is not performance analysis.

On future posts I would like to drill down on each of these tools and I will also provide information about JavaScript profiling and server-side analysis.

Modem MD300 en Ubuntu

Estoy escribiendo este post conectado desde ubuntu con un modem Sony Ericsson MD300 con conexión 3G de Claro Argentina.

Como ya he mencionado previamente, la configuración de este modem lo más costoso (en cuanto a tiempo invertido) que tuvo la configuración de ubuntu.

A diferencia de lo que ocurre en Windows, siguiendo el procedimiento indicado, no hace falta activar el dispositivo y luego conectarse, basta con conectar el modem y automáticamente se dispara la activicación y conexión sin ninguna intervención del usuario.

No voy a entrar en los detalles de la configuración, pues hay gente que ya lo ha hecho con suficiente detalle, asi que simplemente les voy a dejar el link al artículo que según mi experiencia es el más completo: http://laudecioliveira.org/blog/?p=70. Está en portugués pero con un poco de voluntad, puden seguirse los pasos perfectamente.

Espero les resulte útil.

Ubuntu después de dos semanas

Bien, sinceramente bien. Ya venia acostumbrado a las herramientas open source como Open Office, Firefox y Thunderbird con lo cual eso no fue novedad. En cuanto a mi trabajo cotidiano sobre tecnología Microsoft, virtualización, instalé Virtual Box y listo. Realmente es Virtual Box ha superado por mucho mis expectativas, pude levantar una una máquina virtual en formato Virtual PC (.vhd) en una partición NTFS. Al mismo tiempo resulta que la misma máquina virtual (mismo archivo físico) corre mejor en Virtual Box en Linux que en Virtual PC en Windows. Para poner una última frutilla al postre la maquina virtual tiene como sistema operativo Windows7 y tiene corriendo Visual Studio 2010 y Office 2010.

Hola 2010, hola Linux

Un nuevo año comienza y por quinta vez voy a intentar usar linux como sistema operativo de cabecera (ya en algún otro momento contaré sobre mis 4 experiencias previas). En realidad esta experiencia comenzó durante diciembre de 2009, cuando instalé en mi Dell XPS Studio un Ubuntu 9.04 particularmente tuneado que descargué del sitio de Dell. Primero corrí el Live CD para ver si los principales dispositivos era reconocidos y por suerte todo levanto perfectamente a excepción del audio. Después de algunas pruebas básicas decidí instalarlo en modo dual boot con el Windows7 que ya tenía instalado. Una vez instalado, al intentar reproducir audio por primera vez el propio Ubuntu se encargó de encontrar un driver apropiado y previa validación conmigo se encargó de instalarlo y chan! tuve sonido. A continuación me encargué de instalar algunos herramientas de desarrollo como Java, Eclipse, MySql, Pharo y Ruby. Luego instalé algunos programa de uso general como aMsn, VLC, VirtualBox y Thunderbird. Hasta aquí todo fue feliz, realmente el comando apt-get provee una experiencia de usuario muy cómoda. La cosa dejo de ser tan feliz cuando intenté configurar el modem USB de banda ancha móvil. Tuve que googlear un rato y luego de probar varias instrucciones de distintas fuentes, logré que Ubuntu lo reconociera, pero para entonces ya había invertido más de 5 horas. En un futuro post voy a detallar el procedimiento que seguí para hacer funcionar el modem. Por ahora, solo me resta decir que en este momento estoy escribiendo este post felizmente desde Ubuntu.

¡Chau 2009!

Y si, se acabó. Para mi fue un año muy movido y pasó volando. Entre los hechos más relevantes de mi scope este año no puedo dejar de mencionar: mi cambio de trabajo, el cambio de radical que implementamos en el dictado de Algo3, el curso experimental que dictamos de algo1 utilizando Python, la expericiencia docente en UNTreF y mis participaciones en Agiles2009, en el Agile Open Tour y en Smalltalks 2009.

Tecnológicamente comencé el año con Windows7 y lo estoy terminando corriendo Ubuntu 9.04 (tengo un par de posts pendientes sobre este tema).Por otro lado profundicé mi conocimiento de Smalltalk, aprendí Python y dí mis primeros pasos en Cloud Computing e identidad federada

Y esto es todo por este año, mañana seguramente escribiré sobre mis expectativas para el año próximo. Ahora simplemente les digo:

Chau 2009, y que arranquen muy bien el 2010!

Project A: day#end

We shipped it! The product is now complete. It is not yet in production environment because the Go live!is scheduled for the end of January. Working on this project has been a very pleasant experience and weperformed a smooth delivery as well.

A few numbers of this project:

  • 44 stories completed
  • Representing a total weight of 97 points
  • In a timeframe of 5 iterations
  • With an iteration lenght of 1 week.

There is one post pending about this project that I will write after going live.

Retrospectiva con alumnos en Algo 3

El pasado jueves fue la última clase de Algo 3 y nos pareció el momento indicado para hacer una restrospectiva con alumnos. Yo tomé el rol de facilitador. Para la retrospectiva utilizamos la técnica que Diana Larsen utilizó en Agiles2009 y que está explicada en su libro Agile Retrospectives. Muy a grandes rasgos la técnica tiene la siguiente dinámica:

  1. En una pared se traza un timeline (que en nuestro caso representaba el cuatrimestre) y se le pide a los participantes que escriban en post-it los eventos y sensaciones que tuvieron durante los largo del periodo del tiempo en cuestión. Cada post-it se ubica sobre la línea de tiempo considerando su “positividad/negatividad” ubicando más arriba los post-it con referencias a cosas positivas y más abajo los de referencias negativas. Cada participante puede poner varios post-it y no importa que distintos participantes hagan referencia al mismo tema.
  2. Una vez completo el timeline con todos los post-it se pasa a leerlos uno por uno  “clasificándolos” en áreas temáticas.
  3. Cuando se han clasificado todas las historias, se pide a los participantes que voten aquellos temas sobre los quieren trabajar.
  4. Finalmente, los temas más votados son trabajados en mesa redonda. En nuestro caso las áreas más votadas fueron:
    1. Contenido de la materia (16 votos)
    2. Clases prácticas y Trabajos prácticos (12 votos)

Respecto del contenido de la materia los actions items más importantes que sacamos fueron:

    • Reveer la decisión de dar lecturas obligatorias en inglés, pues ha resultado un impedimento muy importante para muchos alumnos.
      • Continuar dando Smalltalk, pero dar más clases prácticas al respecto, pues costó mucho programar el TP Smalltalk.
        • Dar la clase de Scrum antes (en este cuatrimeste fue la última clase). La idea seria darla antes de comenzar con el TP grupal para que puedan utilizarlo al hacer dicho TP.
          • Dar más soporte para el uso de ANT. Este punto no lo comparto, me parece que es una herramienta muy simple y con lo que se dió en clase y un poco de voluntad tiene que ser suficiente para hacer lo que les pedimos.
            • Ajustar la clase de persistencia, pues dejo más interrogantes que respuestas.

              En cuanto a las clases prácticas:

                • Continuar con las clases en el laboratorio
                  • Compartir el diseño del TP con otros grupos para tener una visión distinta.

                    Sin duda al hacer la retrospectiva del con todo el equipo docente tomaremos estos en consideración para el cuatrimestre próximo.

                    Algunas que se mencionaron durante la restrospectiva y que quisiera destacar fueron:

                      • Los alumnos vieron como positivo el hecho de utilizar Smalltalk, pues les permitió tener acercamiento más concreto a la idea de objetos que se comunican enviandose mensajes.
                        • El reconocimiento de los alumnos a la labor del equipo docente, contestando consultas tanto presenciales en las clases como en la lista de correo de la materia.
                          • Les resulto de gran interés la clase sobre tendencias que dimos con Eugenio.

                            Personalmente debo decir que termino el cuatrimestre muy contento pero también bastante agotado, la carga de trabajo de este cuatrimestre fue mucho mayor a la que estábamos acostumbrados. Estoy contento porque creo que el enfoque adoptado permitió a los alumnos aprender mejor los conceptos de la materia y en relación a esto quisiera mencionar un episodio que me ocurrió la semana pasada. Estaba hablando con uno de mis grupos, en un momento les pregunté porque no habían avanzado aún con las clases de interface de usuario y un alumno me contesto: “es que aún nos falta agregar algunas pruebas unitarias para asegurar el correcto funcionamiento del modelo”. Esto no dice cuando aprendieron de objetos, pero si refleja claramente que entendieron la importancia de las pruebas.

                            Me despido con algunas fotos que tomamos durante la retrospectiva.

                            Imagen0039 Imagen0038

                            Imagen0040

                            AOP reloaded

                            El jueves pasado Pablo Cosso me invitó a dar una clase de AOP en su materia en Fiuba. Esto me obligó a desenpolvar mi tesis de AOP y actualizar parte del contenido en base a los avances de los últimos dos años. Mal que me pese el  tema de AOP se ha enfriado muchísimo respecto de los que era hace dos años. Un clara prueba de esto es la actividad de las lista de aosd.net donde la cantidad media de mensajes mensuales no supera los 10 mensajes. El porque de este enfriamiento merece un post aparte que estaré escribiendo próximamente. Más allá de esto, me parece importante mencionar una herramienta para plataforma .NET que se ha convertido en el «análogo» a AspectJ: PostSharp. Esta herramienta ofrece capacidades weaving estático con un modelo de pointcuts basado en anotaciones. Además la herramienta cuenta con una serie de contribuciones que permiten integrarla fácilmente con distintos componentes/herramientas como Spring Framework y EntLib entre otros. La clase duró unos 90 minutos y hacia el final surgieron varias preguntas de parte de la audiencia que parecen indicar que el tema resultó de interés.

                            Quiero agradecer a Pablo por su gentíl invitación.

                            Próximamente más AOP.

                            Saludos!

                            Project A: day#11, same team new project

                            Today we started working on project A2. Project A is still in progress but the work remaining is enough for one dev, so  together with the customer we decided to split the team in two. Diego will continue working in project A for 2 weeks while Gabriel and myself will start working on project A2. Both projects are related, not at the code level but at business level and that is why we splitted the team in two instead of having a new team doing A2. This afternoon we had a review & planning meeting with the customer where we showed the progress on project A and we set the vision and overall context for project A2.

                            This is one of the things that I find interesting an different compared to previous work experiences: projects run fast, maybe in two weeks. So you need to be sharp, execute, deliver and get ready for the next challenge. Weekly iterations help and communicating status daily is crucial to steer the direction if needed.

                            To be continue…

                            Mi arcón de los recuerdos

                            Revisando viejos back-ups encontré algunos programitas que programé hace unos cuantos años. Para mi sorpresa algunos de esos programas son adictivos. Hay tres de ellos en particular que merecen una mención.

                            Ta-Te-Ti: también conocido como 3 en linea. Lo hice después de cursar Teoría de algoritmos 1 para aplicar backtracking en la estrategia de juego de la máquina. image

                            Escalera: es un juego de cartas que solia jugar muy seguido en la época que lo programé.image

                            TECA: Técnica y Estrategia de la Conquista Algoritmica, fue el trabajo con el que aprobé la materia Algortimos y programación. Es un juego muy parecido al mítico juego de mesa TEG.

                            image

                            Mientras los desenpovaba aproveché y los subí a la web. Por el momento solo subí los binario, luego de hacer una revisión del código fuente también lo publicaré baje licencia GPL.

                            Descargar Ta-Te-Ti.

                            Descargar Escalera.

                            Descargar TECA.

                            Espero se diviertan.