Optimizing Azure Blob Storage Uploads

During this week I have been working on an application that relies on Azure Blob Storage. In a few words the application run some processes and uploads the resulting files to Azure. The after each run, some files can change while other remains equal. In order to optimize the application JuanAr suggested adding logic to the application in order to upload only the changed files.

So I invested some time to implement what we called the SmartUploader.  This class is very simple, it acts as a wrapper around the Azure Storage Client API. Each time this class uploads a file it calculates a checksum value and stores it in the blob metadata. So the next time before uploading the file it compares the current checksum of the file to upload with the checksum of the previously uploaded file and if it is the same the it avoids the upload because it means that the file has not changed.

The code snippet below shows the interesting part of the SmartUploader.

And here is the method that calculates the checksum.

Hope this helps you.

Recibirse de Ingeniero en Informática en UBA

Nota prelimiar: por estos diás se está trabajando en FIUBA sobre los planes de estudio de esta carrera, con lo cual es posible que lo que estoy escribiendo en este momento ya no aplique en un par de años, pero hoy por hoy es vigente.

La carrera está basada en un sistema de créditos, para recibirse hay que juntar una cierta cantidad de créditos, lo cuales pueden conseguirse mediante distinto tipo de actividades (el plan de estudio eespecifica la cantidad máxima y mínima de créditos que pueden conseguirse por cada tipo de actividad):

  • Aprobación de materias: esta es principal fuentes de créditos. En general cada materia otorga una cantidad de créditos equivalente a la carga horaria semanal de la materia.
  • Actividades especiales: bajo este nombré genérico entran varias cosas, por ejemplo: si uno es docente colaborador en un materia, podria pedir que le otorguen créditos por ello. Lo mismo si uno realiza algún curso extracurricular. Cuales son las actividades que otorgan créditos y la cantidad de créditos reconocidos es una decisión que pasa por la comisión curricular de la carrera. En este sentido es muy común que se reconozcan créditos por los curso de la ECI.
  • Trabajo final: el último paquete de créditos se consigue con la realización de un trabajo final que puede ser una tesis o un trabajo profesional.

El resto de este post lo voy a dedicar a esta última fuente de créditos y para comenzar voy a explicar algunas particularidades de cada tipo de trabajo.

  • Tesis: es un trabajo de investigación, pero dado que estamos hablando de una carrera de grado, no se espera que esta tesis expanda la barrera de conocimiento. Y considerando que estamos hablando de una tesis de ingeniería, una tema podria ser analizar diferentes técnicas para resolver un problema o bien intentar resolver un problema utilizando una técnica X que si bien existia, no habia sido aplicada a dicho problema. En FIUBA las tesis son individuales. Cada alumno trabaja con un director y al finalizar, la tesis es evaluada por un jurado de profesores. Las tesis otorgan 24 créditos.
  • Trabajo profesional: es un trabajo tipo que cualquier ingeniero podria realizar durante su vida profesional, caso típico en FIUBA es la construcción de una aplicación. Los trabajos profesionales también se realizan bajo la dirección de un profesor, pero a diferencia de las tesis, es el mismo profesor director quien evalua el trabajo. Otra diferencia con las tesis es que estos trabajos pueden realizarse en formal grupal. Estos trabajos otorgan 12 créditos, lo cual implica que aquellos alumnos que realizan trabajo profesional deben conseguir 12 creditos más mediante algunas otras actividades y/o materias.

Más allá de estas particularidades, hay varias cuestiones en común:

  • Son los propios alumnos quienes debe ocuparse de conseguir su director, o sea, la facultad no provee ninguna materia que le de contexto al trabajo final (cosa que si ocurre en algunas otras carreras de la facultad). En ocasiones los profesores tiene ideas para trabajos, pero en la mayoria de los casos, los alumnos trabajan la idea y luego buscan un profesor que esté interesado en dirigirla. Si bien el director debe ser un profesor, los JTP y ayudantes de primera pueden ser co-directores.
  • Todos los trabajos finales deben ser aprobados por la comisión curricular, por lo cual cada alumno debe presentar un propuesta de trabajo describiendo el trabajo a realizar para que la mencionada comisión apruebe dicho la realización de dicho trabajo.
  • El plazo para completar el trabajo es de UN año a partir del momento de la aprobación de la propuesta por parte de la comisión curricular.
  • Informalmente suele decirse que en muchos casos, dependiendo de como se plantee la propuesta, un mismo tema puede ser objeto de tesis o de trabajo profesional.

En futuros post, voy a escribir sobre algunos temas de tesis/trabajo profesional que tengo en mente.

Workshop: ISO + Agile

Well, I know, it’s been a long time, but I‘m back. In this occasion I want to tell you about the workshop facilitated last Friday together with my colleagues: Ariel and Ezequiel. It was publicized under the name “Comunidad de Calidad: Se puede ser ágil siendo ISO 9001?” (or in English:Quality Community: Can you be agile and still be compliant with ISO 9001?). The workshop was organized by Polo Tecnológico Rosario. Throughout the workshop we reviewed some agile
concepts and myths, focusing on how agile practices can add value to the ISO 9001:2000/8 implementation.
The workshop lasted almost 4 hours and we had very good feedback from the audience.
If you want to take a look at the slide deck we used, it is published here.

Experiencia Europea

Esta tarde voy a dar una charla en FIUBA para compartir mi reciente experiencia en Europa. La idea es fomentar los intercambios y difundir algunas de las distintas alternativas existentes para realizar actividades académicas en Europa.

Estos son los detalles de la cita:

Día: lunes 13 de diciembre
Horario: 18,30 horas
Lugar: aula 414, FIUBA (sede Paseo Colón)

Nos vemos!

[Algo 3] Reunión de fin de año y retrospectiva interna

Luego de exámen del martes pasado, hicimos la reunión de fin de año. Mientras degustábamos la abundante picada preparada por Pablo y los sandwiches de miga traidos por Diego hablamos de diversos temas incluyendo la acreditación de las carreras de informática, la reforma de los planes de estudio y otras cuestiones que exceden el ambito académico y no vienen al caso en este post. Como era esperar también hablamos de la materia, reflexionando sobre nuestra visión del cuatrimestre y sobre las opiniones recogidas durante las retrospectivas con los alumnos. A partir de esto surgieron algunas ideas para incorporar en próximos cuatrimestres. De estas ideas quiero destacar particularmente 2:

  • Algo3 2.0:  definitivamente vamos a abrir una cuenta de Twitter para publicar noticias durante la cursada y tal vez  twitear en vivo durante las clases. También mencionamos la posibilidad de lleevar un blog para postear lo que vamos vamos viendo en cada clase, pero esto no es seguro (aunque Gabriel estaba muy motivado con implementarlo)
  • Nuevo tipo de TP: durante la materia hacemos mucho incapié en la evolución del software y el hecho de que el código se escribe una vez pero se lee muchas. A pesar de esto nuestros TPs les piden a los alumnos escribir código pero no leer. Es por esto que posiblemente en próximos cuatrimestres incorporemos un nuevo tipo de TP, donde los alumnos partan de una aplicación ya codificada y deban entenderla para luego poder extenderla.

Equipo de Algo3 en la reunión de fin de año.

[Algo3] Restrospectiva 2010-2

El jueves pasado fue la última clase de algoritmos 3 y como es costumbre desde hace ya un par de cuatrimestres, hicimos una retrospectiva con los alumnos. Comenzamos la actividad con una dinámica para romper el hielo y así facilitar la participación de los alumnos en la retrospectiva. Para la retro utilizamos la dinámica del timeline para identificar los temas y sucesos más relevantes, luego trabajamos en debatir al respecto y intentar identificar soluciones.

Los alumnos estuvieron muy participativos, hubo mas de 110 post-its.

Entre los puntos positivos se destacaron:

  • «Felicidad» con Smalltalk, jajajja, varios destacon como positivo haber aprendido varios lenguajes y en particular Smalltalk. Incluso alguno dijo haberse quedado con ganas de más Smalltalk.
  • Prácticas de ingenieria: varios mencionaron como muy útil/entretenido  el hecho de aprender y utilizar técnicas como TDD y herramientas como SVN, ANT, etc
  • La relevancia de los temas vistos en la materia, pues todo les parecio muy útil y aplicable en la vida real

Por otro lado entre los puntos conflitivos encontramos:

  • Falta de tiempo en los examenes
  • Falta de soporte en las herramientas
  • Inestabilidad de Pharo: ja! no puedo no hace un comentario sobre esto, es cierto puede que Pharo esté un poco inestable pero es un entorno muy abierto y todos podemos colaborar y tiene una comunidad muy activa en su desarrollo, cosa que no es tan común en otros ambientes.
  • Clases prácticas dificiles de seguir: en ocasiones de tornaban densas, sobre todo la parte de escritura de código
  • La clase teórica de generics fue densa y no se terminó de entender el tema
  • Poca disponibilidad de algunos docentes para consultas de parciales / TPs
  • Las lecturas en inglés siguen siendo un obstáculo para algunos alumnos

A pesar de que he mencionado más puntos negativos que positivos, mi balance es positivo pues no importa la cantidad de puntos sino el peso de cada uno. Al mismo tiempo creo que muchos los puntos negativos son de «fácil» solución.

Les dejo algunas fotos de la actividad.

Si alguien cree que me olvidé de algo, no duden en agregarlo como comentario.

 

Feliz 10 años Snoop Consulting

Hace poco más de una semana me llegó un mail que me conmovió como pocos, era de Sergio Candelo, un gran profesional con quien tuve el gusto de trabajar durante 3 años y unos de los socios fundadores de Snoop Consulting.  El mail era la invitación a la fiesta de los 10 años de Snoop.

La fiesta fue ayer, excelente, me encontré con muchos Snoopies, X-noopies y con gran parte de mi equipo Equipo .NET.

Ayer mientras escucha hablar a los socios en el momento emotivo de la noche (antes de que el alcohol hiciera efecto en la gran mayoria de los asistentes) recordé algunas de las cosas que siempre me gustaron de Snoop: espíritu innovador, horizontalidad y libertad.

El momento emotivo terminó con un remake del video de los 6 años de Snoop ajustado para la ocasión. ¡¡¡¡Cuantas veces ví ese video!!!! y ¡¡¡cuantas otras lo compartí con clientes!!!. Hay una frase de ese video que fue la que en su momento me decidió a incorporarme a Snoop: «Tenemos claro sobre tecnologias gestionar tus proyectos».

Luego vino un show de tango, un poco de baile, sorteos, premios y karaoke. Si Karaoke y quiero detenerme en este punto para destacar algunas actualiciones:

  • La faceta artistica (y oculta para muchos) de Ramiro GM
  • La actuación intrépida del ex.grupo de Desarrollos ágiles: Charly, Lean, Mane, Lio, Santi, German y yo.
  • y por último la cararotez de Leandro Romero (si, con nombre, apellido y foto) para cantar temas de Chayanne (y después te haces el metal!!! Caretón!)

Gracias Snoop y que cumplan muchos años más!