martes, julio 07, 2009

Aprovechando la redes sociales para difundir y agregar valor

Hace un tiempo me asombraba positivamente cuando en un sitio/portal web tradicional encontraba vinculaciones con plataformas y servicios sociales. Hoy, en contraposición, me frustro bastante cuando me encuentro en un portal (p.e., de algún proyecto, institución, medio o comunidad de interés) cuyos contenidos considero de valor para mis grupos de trabajo y sin embargo me dificulta la tarea de socializarlos.
Entrar en el mundo de las redes sociales no es tan complejo como uno podría pensar. De hecho hay mucho ya pensado y preparado. Para allanar un poco el camino, estoy pensando en una estrategia de tres etapas. Nada del otro mundo; simplemente probar poco a poco los patrones que parecen ser exitosos para otros. Cada etapa aumenta la apuesta con la filosofía “2.0”. Se puede ir paso a paso, viendo como evoluciona, y respondiendo en sintonía.
  • Etapa 1: facilitar y motivar la publicación de nuestros contenidos en las redes y abrazar la participación (que con suerte conlleva a su apropiación).
  • Etapa 2: tener presencia en redes existentes y participar activamente (estrategias como aplicaciones específicas que nos den presencia en las redes existentes).
  • Etapa 3: traer las redes y sus servicios/aplicaciones a nuestro espacio, creando eventualmente redes propias (empezando con estrategias como las propuestas por Friend Connect).
En este post quiero pensar con ustedes sobre la primer etapa.

Breve vistazo a las redes sociales
Las plataformas de redes sociales son un mecanismo poderoso de difusión y atracción de participantes que permiten a nuestra comunidad de usuarios agregar valor a los contenidos que publicamos. En la actualidad hay una gran variedad de servicios que podrían calificarse como “sociales”. Todos ellos se caracterizan por permitir al usuario definir su grupo de contactos (amigos) con los que compartirá distintos tipos de contenidos (p.e., bookmarks, videos, aplicaciones, documentos). En su mayoría, estos servicios también mantienen a los usuarios informados sobre las actividades de sus contactos (comentó aquí, compartió una foto, fue identificado en un video, etc.).
Dos buenos ejemplos son Facebook y Twitter. Sin entrar en detalles sobre cada uno de ellos, veamos brevemente como pueden ser utilizados como herramientas de difusión.

Facebook
Facebook (http://www.facebook.com) simplifica la tarea de compartir páginas web (así como fotos, videos, y otros tipos de media). Cada vez que un usuario comparte una página, puede incluir su comentario personal (indicando a sus amigos cual es el valor de la página). Todos sus contactos verán la página compartida (foto, un resumen, y link a la pagina original). Todos podrán comentar e indicar si la página les gusta especialmente y podrán compartirla nuevamente a su red de contactos (que seguramente incluya a personas que no eran amigos del usuario que compartió el link en primer lugar). Estos simples mecanismos permiten la propagación viral de contenidos web de forma más efectiva que el tradicional reenvío de e-mails (y a diferencia del e-mail, aun goza de buena prensa).
Ilustración 1: ejemplo de pagina web compartida y comentada en Facebook

Twitter
Twitter (www.twitter.com) es un sitio de Microbloging. Cada usuario tiene su propio microblog, sigue (observa) microblogs de otros usuarios y otros usuarios siguen su microblog. Las entradas en un microblog están limitadas en su longitud (algo así como 140 caracteres). El uso del microbloging es variado. Algunas de las entradas más comunes en los microblogs son aquellas que indican la actividad, ubicación o interés actual del usuario (p.e., “preparando mi presentación para el lunes”, “camino a la oficina”, “pensando en redes sociales”). Algunos usuarios utilizan su microblog para compartir frases celebres, links de interés, información sobre eventos y resúmenes de posts en sus blogs. Actualmente, también muchas organizaciones mantienen a sus seguidores informados por medio de microblogs (por ejemplo de eventos, como en el caso de Greenpeace) y es creciente el uso de microbloging como herramienta periodística.
Ilustración 2: Microblog de Greenpeace

Redes sociales y su sitio web
Probablemente en su sitio web, ciertos elementos se destacan como candidatos a ser difundidos por medio de las redes sociales: artículos, ofertas, convocatorias de proyectos, becas, novedades y noticias. Para identificar estos elementos podemos preguntarnos: ¿hay alguien ahí afuera interesado en compartir y/o discutir este contenido? (y no hablo solo de que tenga intención de pasarle la URL de nuestra empresa a alguien más, sino genuino interés en el contenido). En otro post podemos charlar sobre qué hacer cuando la respuesta es no.
Para algunos de estos elementos, probablemente su sitio ya provee el mecanismo de “enviar por mail”. Si bien el mismo es útil, sobre todo para aquellos usuarios que todavía no participan en redes sociales, requiere que el usuario recuerde las direcciones de e-mail de aquellos con los que quiere compartir el artículo. Los mecanismos provistos por las plataformas de redes sociales, en su mayoría, proveen al usuario formas de compartir con menor esfuerzo incentivándolos a compartir.
Existen varias estrategias de dominio público para incluir mecanismos para facilitar y motivar que se compartan contenidos en redes sociales. Si bien son en su mayoría simples de implementar, algunas hacen necesarios un conjunto de cambios menores al sitio web.
Bookmarklets y plug-ins
Una estrategia que muchos usuarios de redes sociales utilizan es la de agregar botones específicos (bookmarklets) o plug-ins su navegador web. Estos son provistos directamente por las plataformas de redes sociales y funcionan tomando información de la página. Cuando el usuario se encuentra en una página que quiere compartir, acciona el bookmarklet. Este envía un pedido al servidor de la red social en cuestión, el cual se encarga de obtener información sobre la página y sobre el usuario de forma transparente. Dos ejemplos conocidos de esta estrategia son el bookmarklet de Facebook y el plug-in de del.icio.us.
Ilustración 3: Bookmarklets y ejemplo de compartir pagina web en facebook

Para que los bookmarklets y plug-ins funcionen correctamente, los tags html de título ( ) y descripción () de la página deben reflejar lo que el usuario está viendo (p.e., título y resumen de la nota). Hay muchos sitios que seleccionan para todas las páginas un mismo título (p.e., nombre de la empresa) y descripción. Algo así se aprecia en la ilustración 3, en la que el título y descripción que se verá en la nota compartida en facebook no reflejan el contenido de la nota que yo quería compartir (que trataba el tema de estafas vía SMS).
La limitación de los bookmarklets es que no todos los usuarios disponen de los mismos.

Incluir una selección de botones para compartir
Las plataformas de redes sociales más populares proveen para los desarrolladores de sitios web plantillas y piezas de código para introducir en sus sitios links de “compartir”. Algunos se encuentran claramente documentados como es el caso de Facebook (http://www.facebook.com/share_partners.php) mientras que para otras redes, se puede encontrar una “receta” fácilmente en internet.
Ilustración 4: Botones de "Compartir"

Incluir este tipo de botones implica (además de lo indicado para el caso de portlets en relación al título y descripción de la página) que se incluya en cada página (por ejemplo bajo el titulo principal del contenido en cuestión) el código provisto por la red social. En dicho código debe proveerse adicionalmente la URL de la página que el usuario está viendo.
Todo esto sugiere que mantener el sitio manualmente es muy costoso dado que se debe modificar cada página en la que se quiere ver los botones, incluyendo cada uno de los botones. Por el contrario, para sitios generados dinámicamente la implementación y mantenimiento suele requerir poco esfuerzo.

Incluir un servicio de integración de botones para compartir y de estadísticas
Existen actualmente algunas empresas que simplifican la tarea de incluir y mantener una amplia variedad de botones de “compartir” al mismo tiempo que proveen estadísticas sobre el comportamiento de usuarios y contenidos (p.e., http://www.addtoany.com/, http://www.addthis.com/, http://sharethis.com/).
Estas empresas proveen un único template de código que al ser incluido en todas las páginas provee una amplia variedad de botones para compartir. La configuración de cuales botones incluir se centraliza en una herramienta de configuración. Mantener los botones actualizados con la funcionalidad provista por cada plataforma social es responsabilidad del proveedor de botones y no de los administradores del sitio web.
Adicionalmente, estas empresas monitorean todas las acciones relacionadas a sus botones y pueden proveen a sus clientes información respecto a paginas que son compartidas, redes a las que se comparte, etc. Esta información es de mucha utilidad a la hora de ajustar la estrategia de redes sociales.
Ilustración 5: Servicio de compartir tercerizado

Estrategias de soporte a las redes sociales
La tecnología descripta anteriormente facilita que los contenidos del sitio web sean distribuidos y apropiados por las redes sociales. Sin embargo, es importante complementar la tecnología con una estrategia que aumente la probabilidad que eso suceda.
Uno de los puntos críticos es asegurarnos de que un buen conjunto de miembros relevantes de las redes que nos interesan son informados cuando en nuestro sitio se publican nuevos contenidos. Para eso tenemos varias alternativas.
Una posibilidad es que algunos miembros de nuestra organización participen activamente en las plataformas sociales que nos interesan. No es necesario tengan como amigos/contactos a cada uno de nuestra audiencia esperada. Alcanza (y sería recomendable) que entre sus contactos estén aquellos miembros de nuestra audiencia que agregan valor al mensaje que queremos transmitir para así aumentar la posibilidad de que sea atendido por sus amigos y los amigos de éstos.
Los cambios importantes deben ser publicado en feeds de RSS, en lo posible, clasificándolos en base a los distintos perfiles de usuario que se cree tener (convocatorias, noticias, etc.) Un feed de RSS permite a nuestros usuarios mantenerse informados sin necesidad de venir diariamente a nuestro sitio. Adicionalmente, permite a terceros ensamblar (p.e., en mashups) servicios de noticias que incluyan nuestras novedades y se publiquen en otras plataformas sociales o no.
Si la respuesta de los usuarios a nuestra estrategia y cambios en el sitio es positiva, deberíamos pensar seriamente avanzar a la etapa 2, sobre la cual conversaremos en mi siguiente post.
Quedo a la espera de feedback.
/Casco

lunes, junio 01, 2009

Google Wave: un disparador de ideas...





Estoy fascinado con la presentación de google wave (y solo llevo 20 minutos de los más de 60 que dura la presentación completa). Es cierto que mucho de lo que muestran ya lo vimos en prototipos de research hace mucho. También se nota que integra lecciones recientemente aprendidas sobre comunicación via tweets y walls/rivers. Lo trascendente de wave es que representa el compromiso de google en desarrollar una nueva herramienta de comunicación. Eso implica que en algo más de seis meses (mi estimación) estaremos inmersos en una nueva experiencia de colaboración on-line, adaptándonos, cambiando nuestras formas de interacción, y pidiendo nuevos features. Es probable que el mail/messager/sms/tweet no vuelva a ser lo mismo después de wave.

El video (disponible en http://wave.google.com/ o directamente en youtube) es mejor que cualquier resumen que puedan leer al respecto. Me pareció un disparador de ideas. Lo recomiendo.

En el epicentro de Wave esta la “conversación”. El principio clave de diseño es pensar una conversación como un objeto compartido, modificado sincrónica y asincrónicamente por un grupo de participantes (algunos podrían no ser personas sino agentes). Esto es radicalmente diferente al e-mail en el que la conversación es un concepto implícito que resulta de distintos anidamientos/relaciones entre mensajes.

En términos de groupware se van a encontrar con enfoques interesantes a problemas como:

· Combina características de e-mail, mensajería, microblogging, y ríos de eventos.

· Transiciones suaves (seamless) entre comunicación sincrónica a asincrónica

· Soporte para latecomers (particularmente interesante es la idea de playback, no solo para que quien llega tarde vea todo lo que paso sino para que además vea en qué orden pasó).

· Integración seamless de conversaciones privadas y públicas.

· Integración de varios servicios groupware hasta ahora independientes.

viernes, agosto 08, 2008

Se viene el blog de Semantic Rails

Hay mucho escrito sobre semantic web y semantic wiki pero, hasta donde yo se, muy poco respecto a como implementarlas, especialmente si les interesa RubyOnRails. El blog de Diego Torres es una buena fuente de recetas (además de tener temas musicales muy interesantes, algunos a dúo con Alejandro Fernández). Les dejo el link http://semanticrails.wordpress.com/

sábado, junio 28, 2008

Cerebro de liebre, mente de tortuga y redes neuronales


Desde hace unos días estoy leyendo "Cerebro de liebre, mente de tortuga". En pocas (y no expertas) palabras, el libro habla de conocimiento explícito (o deliberado) y conocimiento implícito.
Por ejemplo, cuando estamos diseñando un artefacto de software y damos argumentos "sólidos" por cada decisión que tomamos, citando teorías, patrones y estándares, estamos aplicando conocimiento explícito. En contraste, imaginemos a un piloto de Nascar (en una de esas clásicas películas de Hollywood) que esquiva un accidente en el humo, varios autos vuelan sobre su cabeza, hace rebajes, toca apenas el freno, acelera, y sigue sano y salvo en carrera, todo en cuestión de segundos. Terminada la carrera el piloto no puede explicar que hizo, como lo hizo, ni por que lo hizo. No hay teoría que hubiese podido aplicar de manera consciente en esas fracciones de segundo que tuvo; simplemente se dejo llevar por su experiencia/inconsciente/instinto, es decir, su conocimiento implícito.
Vivimos en una sociedad que aparenta valorar mas el conocimiento explícito que el implícito. Nuestra capacidad depende de cuan bien podamos explicar nuestros resultados. Algunas excepciones parecen ser el arte, muchos deportes y las relaciones humanas. Son asuntos tan complejos, con tantas variables y tan ilógicos, que intentar resolverlos solo en base a conocimiento explícito no nos lleva a ningún lado. Y, si hablamos de resultados, no podemos negar que el piloto que sale ileso del accidente ha tenido un resultado excepcional - aún cuando no pueda explicarlo.
Hace un tiempo, Oscar García, un colega de la UNLu, intento desasnarme respecto al desarrollo de redes neuronales entrenadas. Entendí que una red neuronal tiene neuronas organizadas en capas, donde cada neurona esta conectada a todas las neuronas de la capa siguiente. Cada neurona recibe una entrada y calcula una salida que pasa a todas las de la capa siguiente. Si se trata de la última capa de la red, lo que obtenemos es el resultado final. Por ejemplo, podríamos alimentar a una red con todos los pixels de una imagen y obtener a la salida todos los pixels de una imagen que es la versión en escala de grises de la original. Desde mi perspectiva de diseñador orientado a objetos, me atrajo lo simple del modelo (capas, neuronas, conexiones) y supuse que sería muy interesante pensar en el diseño de redes neuronales, patrones de redes, etc. Entonces, Oscar siguió explicándome; lo interesante todavía no había llegado.
La función de una red no depende solamente de la cantidad y forma en que se conectan las neuronas. Tampoco depende solamente de la función de transferencia de la neurona (qué cuentas hace la neurona con su entrada para calcular su salida). En realidad, depende mayormente los pesos por los que se multiplica la salida de una neurona antes de dársela a la siguiente como entrada (imagine que cada conexión tiene un peso por el que multiplica la señal antes de entregarla al destinatario). Eso quiere decir que redes de estructura idéntica (mismas capas, misma cantidad de neuronas, misma función de transferencia) podrían dar resultados diferentes para una misma entrada. La misma red podría calcular la versión escala de grises de una imagen y la imagen negativa. La única diferencia entre las dos redes serían los pesos de las conexiones. Eso me decepcionó un poco porque yo estaba pensando en diseñar con lindos diagramas de UML y aplicar algunos de los patrones del gof (y hasta se me cruzó la idea de escribir un pattern languaje) y Oscar me transformó el problema en uno de matemáticas (no es que no me guste, pero soy un poco haragán). Aparentemente hay muy poca teoría respecto a qué combinaciones de valores consiguen cuál efecto (y solo para redes pequeñas); entonces ¿cómo se diseña una red compleja? Una alternativa es diseñar la estructura (capas, neuronas, conexiones, función de propagación) y luego enseñarle a la red para que ella calcule sus propios pesos.
Hay varias estrategias para enseñarle a una red, pero basicamente consisten en darle muchas entradas y mostrarle para cada entrada cual es la salida que esperamos. Cada vez que la red se equivoca, corrige los pesos que cree que tuvieron la culpa del error. La idea es enseñarle con tantos ejemplos nuevos como podamos hasta que la red ya no se equivoque.
Si uno mira una red que cumple bien la función para la cual fue entrenada, difícilmente pueda explicar que es lo que la hace funcionar bien (mirando los pesos). Simplemente es una buena red porque consigue buenos resultados. Como el piloto de Nascar.
Para cerrar, algunas conclusiones y sugerencias:
1) Se nota que no se nada de redes neuronales.
2) No solo en el arte, los deportes y las relaciones humanas es valioso el conocimiento implícito.
3) No para todo lo que funciona bien existe una explicación racional/explicita. No siempre lo racional nos lleva a la solución.
3) Si un día estás en la librería y repentinamente te llama la atención un libro de un tema que aparentemente no tiene nada que ver con lo que hacés, comprálo. Ni te tomes el trabajo de explicarte por que vale la pena invertir el tiempo y el dinero en ese tema, comprálo y leelo (al menos hasta que algo adentro te diga que ya no te interesa). Seguramente es tu conocimiento implícito que te está dando una señal.
5) Cerebro de Liebre, Mente de Tortuga es un libro recomendable.

domingo, mayo 18, 2008

Pizzared


Recién me pedí unos conopizzas de Pizzared: bárbaros....

El sitio web, bastante minimalista y al mismo tiempo practico, estimó 40 minutos para entregar el pedido; en 35 estaban en casa.

Los/las conopizzas son una experiencia interesante si te gustan las pizzas de masa a la piedra, muy fina y muy cargadas. Son una mezcla de pizza y empanada.

Las tres variedades que probé (Toscana, Capresse y Roquefort) estaban muy finamente condimentadas y con el adicional de una hojita de albahaca que le da un toque especial.

Se ve en el diseño del sitio web, en el diseño de la caja de conopizzas (podría poner una foto, pero les arruinaría la sorpresa del primer pedido), y en la idea de pizza via web en general, que sus dueños buscaron innovar.

Al probar las conopizzas se descrubre que además de marketing, tienen un muy buen maestro pizero.

Si les interesa, los encuentran en http://www.pizzared.com.ar/

sábado, abril 26, 2008

De Robots a mundos virtuales

El 26 de abril, en la escuela de educación de la Universidad de San Andrés dio una presentación muy interesante Marina Bers, investigadora de la Universidad Tafts de Medford, Massachussets .

Marina estudio en la UBA, hizo un master en Educación focalizada en Nuevas Tecnologías en Boston University, y luego un master en Media, Arts and Sciences y el doctorado en el MIT Media Lab bajo la dirección de Seymour Papert.

La pregunta que la obsesiona es ¿cómo la tecnología puede ayudar al desarrollo de la persona y la sociedad? En la búsqueda de respuesta, desarrolló la teoría del “Positive technological development”.

Su trabajo se basa en la teoría del constructivismo de Papert. Papert estudio con Piaget y ahí descubrió que la gente aprende cuando construye cosas. Una forma simplificada de entender el concepto de constructivismo en el contexto de software educativo, es comparando un entorno para aprender matemáticas en el que se aprende a medida que se construyen figuras geométricas (Logo) contra un entorno para aprender matemáticas que presenta formulas/cuentas al alumno y lo premia por la respuesta correcta. El primero sería constructivista.

Otro pilar sobre el que se basa el trabajo de Bers es Positive Youth Development . Éste es un movimiento cuyo objetivo es construir una comunidad que contenga a los jóvenes al mismo tiempo que los motiva a interesarse por contribuir al bien común. El PYD postula varios principios fundamentales: preocuparse por los demás, conectarse con los demás, contribuir, tener competencias, tener confianza, tener valores.

El trabajo de Bers apunta a unir con tecnología el constructivismo y el Positive Youth Development. De ahí el nombre de su enfoque: Positive Technological Development.

Uno de los proyectos de su programa de trabajo es Active Citizenship Technology. Se ocupa de jóvenes estudiantes que dejan su casa para ir a vivir a la universidad. El objetivo es ayudar a los jóvenes ingresantes a conseguirse un marco de contención que les ayude a superar las presiones del estudio lejos de su familia.

Durante tres días construyen el campus universitario virtual del futuro apuntando a que el mismo cubra las necesidades de la comunidad que rodea a la universidad (no solo de los habitantes del campus). La pregunta del millón en este proyecto es “como pueden las comunidades virtuales fomentar el compromiso cívico/social”.

Se trabaja con peer leaders (alumnos de segundo año que tienen una mejor conexión con los ingresantes que los docentes). Algunos son ex-participantes del programa que vuelven a ayudar.
Zora , la tecnología que usan para construir el campus virtual, fue desarrollada por Bers durante su doctorado.

Cuando los alumnos ingresan al mundo virtual de Zora, el mismo está vacío (a diferencia de Second LIFE en el que ya hay mucho creado). Ellos tienen que crear todo. Los objetos en Zora, además de una representación gráfica 3D, tienen historias y valores.


En el Screenshot (el cual tome sin pedir permiso del home de Zora; espero que no se molesten) vemos que el mundo es estéticamente pobre (al menos comparado con otros mundos virtuales populares como The Sims, o second LIFE). Eso es así a propósito. Se decidió enfatizar el trabajo en la creación de contenido significativo (descripciones de objetos, significado de los lugares, funciones, etc). Si bien uno podría crear objetos más atractivos, el ambiente no invita a hacerlo. Para los investigadores, Zora provee herramientas para etnográfica virtual (p.e., parsear los logs para conseguir estadísticas de comportamiento, actividades, etc…) y así interpretar que es lo que este pasando.

Hasta ahora se trabajo con dos grupos.

En la primer oportunidad (2006 si mal no recuerdo) solo se dio a los ingresantes la consigna de construir un campus virtual como a ellos les parecía que debía ser. El resultado fue un campus que solo consideraba las necesidades/deseos de los que lo habían construido. El mundo tenia celulares para cada profe así los alumnos podían contactarlos en todo momento, comidas tamaño Jumbo, buses que recorrían el campus todo el tiempo y los llevaban a donde quisieran, etc.

Para la segunda oportunidad (al año siguiente) se les dió un documento para leer, 2 páginas, sobre responsabilidad social, esperando que les hiciera tomar conciencia sobre el rol del campus. Eso fue importante para conseguir que el mundo que construyeran fuera mucho mas centrado en el beneficio y los problemas de la comunidad. Esta vez se enfocaron en problemas de salud, relevancia de los programas de arte, inclusión de minorías, etc.

Otro proyecto interesante probó Zora para ayudara chicos transplantados a respetar el tratamiento luego del transplante (generando conciencia mediante la creación de un mundo virtual en colaboración con otros chicos transplantados). El problema del tratamiento de chicos transplantados es importante desde lo económico (dejar de tomar los remedios trae problemas mas caros de resolver que el transplante mismo) y principalmente un problema social. Si les interesa conocer más de este proyecto en particular pueden leer los papers de Bers o éste artículo en el diario de la universidad . La que está agachada en la foto es Marina Bers.

Como conclusión de lo que escuché en la presentación (en la que habló de mucho más que lo que yo mencioné) me queda que la consigna de trabajo que se da a los chicos/jóvenes junto con la experiencia de construir el mundo virtual desde cero consiguen que se tome conciencia y que se cambie la conducta. Más importante, logra compromiso social.

Marina también contó algo de su trabajo con LegoRobotics. Este tema le interesa porque esta convencida de que, dado que la tecnología esta en el día a días de los chicos, también debería estar en la currícula. Los robots son el equivalente futuro del material de trabajo de los jardines de infantes (bloques, masa, material Montessori, etc.). Recientemente escribió un libro dirigido a docentes de nivel inicial/primario con guías para incorporar LegoRobotics en clase.

Durante su presentación recomendó varios libros

El segundo yo. Sherry Turkle (1984). The Second Self (New York: Simon & Schuster, 1984).

Mindstorms: Children, Computers, And Powerful Ideas. Seymour Papert.

Blocks to Robots: Learning with Technology in the Early Childhood Classroom (Marina Bers)

Coordenadas de Marina Bers
http://www.tufts.edu/~mbers01
marina.bers@tufts.edu
Developmental Technologies (DevTech) – Research group
http://ase.tufts.edu/DevTech

Agradecimientos

Agradezco a la Universidad de San Andrés, en especial a Alejandro Artopoulos y Jason Beech por la invitación a la conferencia.

martes, abril 22, 2008

CIC - Concurso de subsidios de investigación aplicada en TICs - Sinergia TIC 2008

Se encuentra abierta la primera convocatoria a subsidios para proyectos deI+D en el marco del proyecto de creación del Centro de Investigación,Desarrollo e Innovación en TICs de la Comisión de InvestigacionesCientíficas de la Provincia de Buenos Aires.

Las bases y formularios se encuentran disponibles en el sitio web de la CIC(http://www.cic.gba.gov.ar/).

Fecha limite para presentación de propuestas: 19 de Mayo de 2008, a las 14horas.

OBJETIVOS DE LA CONVOCATORIA

Apoyar el desarrollo de proyectos de investigación aplicada y transferenciaen el área de las Tecnologías de la Información y las Comunicaciones (TICs),que contemplen un desarrollo transferible a nivel nacional y/ointernacional, orientado a:

  • Fomentar la investigación aplicada en áreas prioritariaspara la provincia.
  • Fomentar la sinergia entre el sector científico y elsector público y privado.
  • Fomentar la investigación en educación para el desarrollode recursos y capital humano en TICS.

Como temas de interés prioritarios (no excluyentes) se proponen lossiguientes:

  • Automatización de procesos industriales
  • Calidad de software
  • TICs y educación
  • Bioinformática
  • Gestión de contenidos y conocimiento
  • Gobierno electrónico
  • Ingeniería de Software
  • Micro y nano electrónica
  • Procesamiento de imágenes y señales
  • Productos y servicios móviles Robótica y domótica
  • Seguridad y confiabilidad en TICS
  • Sistemas distribuidos
  • Sistemas embebidos
  • Sistemas georeferenciados
  • Tecnologías para el entretenimiento
  • Telefonía y acceso
  • TICs aplicadas al agro
  • TICs aplicadas a la salud

Inversión de control

En las dependencias
Para utilizar dependencias alcanza con subclasificar Object o Model. La clave esta en los métodos #chanded: que heredamos de ellas, los cuales esconden todo lo que pasa tras bambalinas para hacer funcionar las notificaciones.

El “framework” llama al código del usuario (#update:). Llamamos a esto inversión de control

En el “framework” de construcción de interfaces
Uno de los pasos claves en la construcción de GUIs en Visualworks es la subclasificación de ApplicationModel.

Nuestro ApplicationModel va a recibir muchos mensajes que nosotros nunca enviaremos desde nuestro código. Muchos de ellos los mencionamos al configurar los widgets (actions y aspects). El método #windowsSpec casi podemos olvidar que existe porque nunca enviamos explícitamente el mensaje y casi nunca miramos su implementación.

El aplicación model puede redefinir los métodos #preBuildWith:;
#postBuildWith:; #postOpenWith: . La aplicación (el código del escrito por nosotros) nunca envía esos mensajes. Existen como gancho (hooks) para que, mientras el “framework” de interfaces tiene el control, yo pueda hacer cosas como esconder/desactivar widgets, dar últimos toques de configuración a la GUI (como elementos seleccionados en una lista), etc.
Vean el método #openInterface:withPolicy:inSession: en ApplicationModel. Se trata de un template method en el que el objeto se envía a si mismo los mensajes antes mencionados.
La clase ApplicationModel provee implementaciones “vacias” de los métodos #preBuildWith:; #postBuildWith:; #postOpenWith:. De esta manera, las subclases pueden optar por implementarlos o no.

En SUnit
Para definir un test subclasificamos TestCase.

Hay tres elementos clave en un test. Su método #setup (donde se prepara el fixture de objetos que voy a necesitar para el test), su método #tearDown (donde se liberan recursos que pude haber generado para el test y no se van automáticamente) y los metodos #test*.

Uno nunca envía explícitamente los mensajes #setup, #tearDown o alguno de los #test* a un TestCase. Uno crea un test indicando cual de los tests quiere correr (myTestCase := MyTestClass selector: #testSomething) y luego le dice que corra (myTestCase run).

Luego de enviar el mensaje #run a un TestCase, el mismo termina recibiendo el mensaje #runCase para el cual existe un template method implementado en TestCase que dice algo como:

>>runCase
[self setUp.
self performTest] sunitEnsure: [self tearDown]


Por eso uno implementa #setup y #tearDown aunque nunca los envíe. Es un caso mas de inversión de control

Inversión de control y el template method
En los tres casos que vimos anteriormente la inversión de control se consigue/introduce gracias a un template method (y a la herencia). Ese es un mecanismo muy comúnmente utilizado para construir clases (o conjuntos de clases) reusables.

miércoles, diciembre 12, 2007

En mayo dimos unos cursos muy interesantes para la gente de AMET.
Muchas gracias a la gente de AMET por la nota que publicaron: http://www.ametregional1.org.ar/noticia_capa_microsoft.htm

Si bien en la foto estoy yo solo representando al LIFIA, en el proyecto trabajo Alejandra (coordinando todo), Eliseo, Pablo, Fernando, Miguel, Lucas y yo con el dictado.