Una sinfonía en C#

Un pequeño aporte a la comunidad de habla hispana.

Portapapeles circular en Visual Studio

 

Este es un truco muy simple pero que a mí me ayuda día a día y a mucha gente que le comenté le sorprendió y le pareció muy útil, sencillamente:

Queremos pegar el contenido del portapapeles como muchas veces, pero no el último que copiamos sino uno anterior, es esto posible? respuesta simple: si!

Cómo usar el portapapeles de visual studio de manera circular, es decir, acceder a cosas copiadas antes?

Simplemente en lugar de usar Ctrl + V usamos Shift + Ctrl + V

Magia, espero sea útil

Extreme startup coding competition en Ágiles 2012

Agiles 2012

El día 25 de Octubre pasado hemos estado junto a Adrián en la quinta edición de las Jornadas latinoamericanas de metodologías ágiles, que en esta oportunidad tuvieron lugar en la Ciudad de Córdoba en Argentina, dando un taller titulador “Extreme startup coding competition”.

IMG_2774

Extreme startup coding qué?

La actividad en cuestión se trata de un juego en el cual los participantes deben desarrollar una aplicación que sea capaz de responder preguntas que son enviadas por un servidor centrar, en el lenguaje y plataforma que gusten.

Le idea de esta actividad es vivir la dinámica de enfrentarse a la realidad de una “startup” es decir, una empresa que está recién empezando. Los problemas que uno debería enfrentar a medida que crece la empresa, problemas que van llegando y a partir de la evolución de los mismos detectar procesos repetitivos y otro que no lo son.

La idea y dinámica completa se puede encontrar en este link.

IMG_2782

Es un software

Al fin de cuentas el centro del juego es un servidor HTTP en el cual los participantes se registran con su URL local y a partir del inicio del juego el servidor comienza a enviar preguntas, si bien el proyecto original está disponible para descarga pensamos en ir un poco más allá y hacer nuestra propia versión.

Es un proyecto Open Source

Finalmente gracias a la iniciativa de gente del equipo de Kinetica, nuestra versión de ESCC es un proyecto Open Source que reside en GitHub, el nombre que lleva es tries-on.js que viene de “trivia extreme startup on node.js” ya que, lo hemos hecho un node.js.

Y qué pasó en Ágiles?

Bien, hicimos la actividad y tuvimos equipos muy preparados, por ejemplo:

IMG_2797

Durante el desarrollo del taller hubo intentos de resolver el problema con ASP.NET Web Forms (exitoso), ASP.NET MVC (fallido), Node.js (fallido), Ruby (fallido) y C# (exitosos), si bien el clima de camaradería generado gracias a esta hermosa comunidad se hizo presente todo el tiempo, la competencia sacó lo peor de cada participante, como por ejemplo cargadas al quedar primeros en el Leaderboard.

IMG_2793

Y el equipo ganador (no libre de sospechas sobre la victoria) Guiño

IMG_2801

Por supuesto que pasamos un momento muy grato con amigos y colegas durante este taller y toda la jornada en general, con relación a ESCC surgieron algunas cosas para mejorar con relación a la dinámica y detalles para hacerlo más fácil de empezar, pero será motivo de otras aventura.

Saludos!

Actividades participativas en el aula

Generalmente, a esta altura del cuatrimestre de la materia que dicto en la facultad hacemos un repaso general de los conceptos como para dar un cierre a esta primera etapa antes del primer parcial.

Tratando de crecer

Con la idea de hacer algo diferente y lograr que los alumnos participen, pero más importante que esto es que busquen dentro de ellos si conocen las respuestas a las preguntas (sin necesidad de llegar el temido “parcial sorpresa”) y relacionen conceptos pensé en buscar una actividad que alcance estos objetivos…pero no sabía cómo.

Con una ayudita de mis amigos

Entonces pensé: a quién preguntarle sobre ejercicios de aprendizaje participativos sino a Fer Claverino? eso hice y me comentó sobre algo la actividad “Cazadores de mitos” …interesante, pero quería algo más, el capo de kinetica (aka Ale) me comentó sobre cierta dinámica dónde los participantes van completando datos sobre un concepto; con ambas cosas en mente tuve un rapto de lucidez e hice lo siguiente:

Participar para aprender

Soy un convencido de que el concurrir a un aula tiene que tener el valor agregado de la interacción con los docentes y la participación, el equivocarse para aprender, el repreguntar.

Tres juegos, una clase

La clase está dividida en grupos de 3 a 5 alumnos por motivos que no vienen al caso, para esta primera actividad juntamos las mesas y trabajamos en grupo.

Primer ejercicio: Completar el concepto

WP_000138

Antes que nada escribí los nombres de los conceptos más importantes vistos hasta el momento en el pizarrón y para el ejercicio repartí los temas arbitrariamente, uno por grupo.

Entonces cada grupo escribe a modo de título el nombre del tema en una hoja y escribe debajo un concepto que es verdad, por ejemplo:

Naranjas:

son un cítrico

Cada grupo pasa la hoja al siguiente grupo y éste agrega otra verdad, en caso de ver que algo de lo escrito hasta entonces es incorrecto lo corrige o pregunta.

Una vez que la hoja regresa al origen se lee en voz alta, lo que yo hice fue extender la idea del concepto en caso que fue necesario.

Duración: 15 minutos.

Como primer ejercicio para calentar motores, estuvo bien, pero lo mejor llegó después.

Segundo ejercicio, compitiendo por la verdad:

Para el segundo ejercicio los grupos cambiaron de tema con otro grupo y la consigna fue:

Cada grupo debe armar una presentación de un máximo de 5 minutos durante los cuales explicarán el concepto que les tocó pero agregarán dos mentiras a la presentación, los demás grupos escucharán la presentación y cuando detecten una mentira deberán explicar por qué lo es y recibirán un punto.

En caso que alguna mentira no sea descubierta al final de la presentación el equipo que expuso el tema explicará cuáles eran las mentiras y por qué y se le computarán los puntos a favor.

Duración: 15 minutos para preparar los temas, 5 máximo para presentarlo.

Muy Pusimos un premio para el grupo ganador, relacionado con el trabajo final, fue muy interesante ver a los alumnos interesados en escuchar cada palabra de la presentación y debatir si lo que se estaba diciendo estaba bien o mal.

Tercer ejercicio, relacionemos pero evitemos la fruta:

El ejercicio final fue individual, la consigna:

Escribí el nombre de los mismo conceptos que trabajamos en los ejercicios anteriores en el pizarrón y algunos más relacionados, por ejemplo Naranja y cítrico, entonces los alumnos van pasando de a uno, en principio quien quiera pero no puede hacerlos dos veces si alguien más no pasa antes, al pasar vincula un concepto con otro mediante una línea y explica a todos el por qué de la relación, el ganador (que en este caso tiene como premio dar por aprobado un punto del parcial) es el último que encuentra un vínculo que al explicarlo nadie considere…insostenible digamos Lengua fuera

Duración: 10 minutos.

Este ejercicio fue aún más interesante ya que los chicos empezamos a pararse para participar y al final quedaron todos de pié viendo qué podían relacionar para conseguir el premio.

WP_000143

Aprendizajes para todos

Además de que los conceptos explicados se debatieron y se analizaron mucho durante la clase, todos participaron y se rompieron muchas barreras entre gente que tal vez no tenía mucha relación, ni hablar del vínculo con los profesores, la clase se pasó volando.

Nos leemos.

El desafío de la gomita

Desde hace algunos años doy clases en la facultad y siempre tratamos de hacer alguna actividad relacionada con la agilidad y de paso “romper el hielo” un poco en la primer clase. En otras ocasiones hemos hecho el juego del pajarraco, asistidos por la gran Ingrid, esta vez invitamos al bueno de Fer Claverino que propuso hacer el “desafío del malvavisco”.

http://www.malvaviscos.com.ar/wp-content/uploads/2010/11/malvaviscos1.jpg

El desafío del malvavisco

Es una actividad que se centra en desarrollar una torre con ciertos elementos pero principalmente busca hacer hincapié en el valor del desarrollo iterativo.

WP_000051

La dinámica.

Básicamente se entregan algunos fideos, cinta, hilo y un malvavisco, pero ante la dificultad de conseguirlo en Argentina lo cambiamos por una gomita de menta.

357984745_9e858eb4a5_m

Entonces, se entregan los materiales y se plantea el desafío:

“construir la torre más alta que tenga en el lugar más alto la gomita”

todo esto en equipo y en aproximadamente 18 minutos.

WP_000055

Qué es lo que pasa?

Mayormente, se comienza con el desarrollo, algunos planifican unos minutos y otros se lanzan sin más, en definitiva el mayor desafío es que le estructura soporte la gomita en la punta, un dato interesante es tomar el tiempo que tardan los equipos en hacer la primer prueba con la gomita, en nuestro caso un equipo lo hizo a los 4 minutos, otro a los 15, adivinen quién lo hizo mejor….

WP_000057

Qué aprendemos?

Se aprende el valor de no perder el objetivo del proyecto y sobre todo evaluar nuestro requerimiento más riesgo lo más temprano posible y hacerlo todas la veces que podamos (desarrollo iterativo)

La experiencia

En resumen fue un gran momento y una inmejorable manera de comenzar un nuevo ciclo lectivo y de paso introducir la agilidad a quienes no la conocían, lo más interesante el intercambio posterior sobre lo que aprendimos.

dejo algunos links sobre el tema. Hasta la próxima.

http://marshmallowchallenge.com/Welcome.html

http://marshmallowchallenge.com/Instructions_files/TED2010_Tom_Wujec_Marshmallow_Challenge_Web_Version.pdf

Mitos de jQuery: Es lo mismo usar $.click que $.bind(“click”) ?

 

http://dsc.discovery.com/fansites/mythbusters/top-ten/2009-mythbusters-moments/gallery/top-mythbusters-moments-intro.jpg

El otro día durante cierto curso me hicieron una pregunta con un argumento que escuché otras veces, básicamente era así:

“Es cierto que no es lo mismo usar $.click(fn) que $.bind(“click”, fn)?”

Agregando además:

“Me dijeron que nunca use $.bind(“click”, fn) porque agrega el mismo evento varias veces y $.click(fn) no”

Bien, la respuesta que di, es un rotundo, no, usar $.click(fn) es lo mismo que usar $.bind(“click”, fn), de hecho todos estos helpers de eventos lo único que hacen es ahorrarnos escribir el primer parámetro de $.bind.

Pero no nos quedemos con lo que yo digo, vamos a ver el código de jQuery asociado a la función $.click(fn) y no nos va a quedar duda.

jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
	"change select submit keydown keypress keyup error").split(" "), function( i, name ) {

	// Handle event binding
	jQuery.fn[ name ] = function( data, fn ) {
		if ( fn == null ) {
			fn = data;
			data = null;
		}

		return arguments.length > 0 ?
			this.bind( name, data, fn ) :
			this.trigger( name );
	};

	if ( jQuery.attrFn ) {
		jQuery.attrFn[ name ] = true;
	}
});

Básicamente lo que hace es definir un string con todos los nombres de los helpers de eventos, después hace un split a partir de el caracter espacio, el array resultante se itera un jQuery.each. dentro del bucle está la explicación, primero agrega la función a jQuery.fn (que apunta el prototipo), es decir, al hace

jQuery["click"] = function....

Está agregando la función click que después podemos invocar con $.click(fn), el cuerpo de la función llama a bind utilizando el mismo string, en nuestro caso click (en caso de no encontrar argumentos simplemente dispara el evento con trigger, como si hiciéramos $.click() )

return arguments.length > 0 ?
	this.bind( name, data, fn ) :
	this.trigger( name );

 

En definitiva, es exactamente lo mismo usar click que bind.

ACLARACIÓN: El uso de bind ha sido deprecado si bien sigue existiendo en la librería, en su lugar se utiliza “on”, de hecho al código de jQuery 1.8.1 sería:

	return arguments.length > 0 ?
		this.on( name, null, data, fn ) :
		this.trigger( name );

Sin embargo esto no significa que click no sea igual a bind, simplemente bind se cambió por on por motivos que voy a explicar en otro post.

Hasta la próxima.