martes, 22 de abril de 2008

Caminando con Pier #5 - Creando una págína con estructura

En el post anterior habíamos visto como agregar páginas y blogs a nuestro sitio. Sin embargo, algo falta para que pueda se considerado "operativo" (además de un estilo propio, claro): en general, todas las páginas de entrada a un sitio tienen una estructura particular, en donde presentan distintos datos: bienvenida, novedades, etc. 
En mi caso, para este ejercicio, quiero que mi punto de entrada quede así: 


Sin tomar en cuenta el estilo, que es un poco exagerado -a propósito-, necesito darle cierta estructura a la página.

Por suerte, para este ejemplo, el header, logo y menú ya lo tengo por defecto, con la configuración estándar de Pier.
Entonces, lo que se necesita es crear la estructura interna: los tres paneles (animation, news y others).

Crear esta estructura, con ciertas limitaciones, es bastante simple:

Selecciono el “Home”.

Del sidebar, selecciono “Edit”.

Cambio el título por: “¡Bienvenido!”
En los contents, ingreso la estructura XHTML con la que desee ver la página:



Después, es tan simple como agregar las páginas o componentes internos seleccionando los componentes, para lograr una estructura de la forma que queramos.

Detalle: Embeber componentes en Pier.
Esta es una de las características (features) únicas en Pier: embeber componentes. Esto es tan simple como poner entre “+” el nombre del componente a embeber, por ejemplo: +welcome+, +news+. Luego, será tan fácil como hacer click sobre los links generados y seguir el wizard de adicion de componentes, para obtener un componente embebido.
Además, es posible agregar componentes ya existentes (indicando el path, por ejemplo: ++).
Es importante destacar que esta es la forma en la que uno insertaría imágenes o links a documentos descargables: se embeben como cualquier componente, y luego se selecciona “File” como tipo de componente.

Problema: Según el diseño de las páginas de Pier, todas llevan un título. Para armar estructuras a veces es deseable no poner un título (veamos por ejemplo el diseño con el que estoy trabajando), pero no hemos encontrado una forma elegante de ocultarlo o eliminarlo. Hay, sin embargo, algunos workarounds:
Lo más fácil es simplemente cambiar el CSS para el título (H1), y ponerle “display: none” o alguna de las otras formas.
Es posible modificar la estructura desde Squeak, para sacarle el título.

Para completar la estructura, hago click sobre cada componente y ingreso el contenido:
  • banner, tiene una imagen (animada, idealmente, pero por ahora no tengo). Despues del click, selecciono tipo File y subo la imagen que quiero usar. 
  • news, es una página embebida, con un listado de novedades (cubriremos esto en el proximo post), por ahora simplemente la agrego como una página: luego del click, selecciono tipo Page y salvo. 
  • welcome, es, al igual que news, una página embebida, pero con contenido (debo poner un mensaje de bienvenida, ¿no?). Para obtener esto repito lo hecho para las novedades, pero agrego como contenido el texto que quiero. 
Con eso, la página queda así. De más esta decir que, con un diseño (y un diseñador adecuado), quedaría muy pero muy bien, pero eso queda para un post mas adelante.


En la próxima entrega (con un poco de suerte mañana mismo ;)), mostraré como construir la página de novedades. 

¡Hasta luego! 

jueves, 17 de abril de 2008

La gente de Smallworks

Hace ya un par de meses que venimos en esto de armar una empresa, y todavía no presentamos al equipo, cosa que fue recordada a gritos por algún miembro de este “hermoso grupo” que forma Smallworks.
Este post es para presentar a todos los que participan en mayor o menor medida de este sueño.
El proyecto lo comenzamos tres amigos en muchas charlas after-office en el lugar en que trabajábamos con anterioridad. Ahí, café, cerveza, vino o fernet de por medio (variando las circunstancias dependiendo del día, la hora, el clima, etc.) empezamos a trazar los principios y objetivos fundamentales que le dan forma a Smallworks.Juanjo, Diógenes y yo (Esteban) somos ese grupo de amigos que puso en marcha esto.
Por supuesto, tuvimos que incorporar rápidamente a otros participantes del proyecto (y, lamentablente, tuvimos que decirle “esperá un poco, a que arranquemos” a otros). Así, sumamos al equipo a gente que completa muy bien el equipo: Nic, en diseño gráfico y “arte”, es el responsable del logo de la empresa y será el responsable del diseño y mantenimiento de la página, así como del diseño gráfico de las herramientas que implementemos; Martín, responsable de ventas, en quien descansan nuestras esperanzas de hacernos ricos ;) Y además, tenemos una legión extranjera, que darán los pasos necesarios para hacernos conocidos -y populares- en España primero, y cualquier lugar de la UE después: German y Laura.
Y ya está, con este equipo podemos lograr nuestros objetivos de convertirnos en un lugar viable y sobre todo, divertido.

martes, 15 de abril de 2008

Caminando con Pier #4 - Agregar páginas y blogs

Nuestra página web tiene una estructura más o menos compleja: una página principal, con un formato específico y después una serie de páginas “Quienes somos”, “Nuestra historia”, etc. Necesito entonces poder agregar páginas, blogs y también necesito poder darle un formato específico a la primer página (para mostrar novedades, etc.).
En esta entrega mostraré como hice para agregar las páginas y blog de la empresa. 

Agregando páginas
Agregar una página es facilísimo:

Seleccione el “home” del sitio.

Importante: Asegurarse de seleccionar la página de la cual queremos “colgar” nuestras páginas. Las páginas se crearan como hijos la que se encuentre seleccionadas.

Seleccione “Add” del sidebar y complete el formulario para una página:

Diálogo de agregado de componentes

Y complete los datos en el siguiente diálogo.

Diálogo de edición de páginas

Los campos obligatorios son “Title” y “Contents” (en realidad, “contents” no es obligatorio, pero es lo que le da sentido a agregar una página, ¿no?).

Importante: Para obtener los botones que ayudan a la edición de texto tengo que instalar un package particular, Pier-EditorEnh-lr.12.mcz, que se puede encontrar en el repositorio http://source.lukas-renggli.ch/pieraddons.

Importante: El formato de los contenidos es una wiki, que utiliza el mismo formato que la swiki tradicional, sintaxis que se puede encontrar aquí. La única diferencia (al menos la única que vi) es la sintaxis para embeber componentes (que es una característica exclusiva de pier), el nombre del componente embebido se pone entre “+”, por ejemplo: +news+.

Agregando blogs
Agregar blogs es tan sencillo como agregar una página cualquiera. En este ejemplo, yo necesito crear más de un blog, que estarán concentrados en una página “Blogs”, por lo cual en lugar de seleccionar el Home, selecciono Blogs como padre, pero el procedimiento es similar:

Seleccione “Add” del sidebar y complete el formulario para un blog:

Diálogo de agregado de componentes, seleccionando "Blog"

La única diferencia con respecto a crear una página común es que hay que cambiar el tipo de componente, por “Blog”.

Y complete los datos en el siguiente diálogo.

Diálogo de edición de propiedades de blog

Hay varios campos obligatorios, pero en la mayoría puedo dejarle los defaults.

Detalle: Agregar un post a un blog, es tan simple como todo lo demás: simplemente seleccione “Add” del sidebar e ingrese el post. El formato del post es el mismo que el de una página wiki (misma sintaxis y misma forma de agregar imágenes, etc.)

Luego de unos minutos de trabajo, su sitio se verá más o menos así:

Nuestra página, en este momento

Problema: El menú “children”, que muestra las páginas de smallworks, está ordenado alfabéticamente, y probablemente ese no sea el orden en el que las querramos.
Existen dos soluciones posibles:
1) Reemplazar el componente de tipo children por un de tipo menú, que nos permite editar el mismo manualmente (pero se pierde el agregado dinámico de páginas).
2) Una solución medio “hacker” (hay que tocar la página desde squeak), pero es bastante sencilla: si tiene una versión de pier anterior a la 215, hay que actualizar a esta (Pier-Model-lr-215) o mayor y ejecutar en un workspace:
(PRKernel instanceNamed: 'Smallworks') propertyAt: #childrenSortBlock put: nil.
Lamentablemente, todavía no hay interfaz gráfica para setear esto.

Hasta aquí, la página de Smallworks ya tiene páginas hijas y un blog. En la próxima entrega mostraré como creo que se hace para darle un formato específico a una página (la principal).

¡Hasta luego! 

miércoles, 9 de abril de 2008

Valor...no es Mc Donalds

En mi ultimo post escribí sobre el liderazgo y lo que significa. En este post había una palabra que se repetía constantemente "Valor". Valor es una palabra que usamos con muchos significados, y las variantes etimológicas del termino son infinitas. Según el contexto el valor es aplicable al coraje o a la concepción monetaria de un bien dado. Aunque en el post anterior esta muy claro que estamos hablando de coraje, me vi animado a escribir el presente, para llevar a la realidad el concepto de valor, dado que el Valor, como valor en si, solo es un concepto dialéctico cuya aplicación puede cambiar con el tiempo.
Antes de seguir quería decirles que este puede ser el ultimo post que escriba en blogger. Como escribo antes Esteban, breve vamos a tener listo nuestro sitio, el sitio de este sueño que dimos en llamar Smallworks [S|W]. Allí vamos a dividir en forma mas clara nuestros post, cada uno (estaban, juanjo, yo y cada uno de los que trabajamos en [S|W]) tendrá su propio blog para contar experiencia personales y habrá un blog general donde postearemos mayormente sobre tecnología y las experiencias de esta aventura con forma de empresa empresa.
De esta manera encontrarán mejor clasificados los tipos de posts. (Supongo que ya se habran dado cuenta del perfil de cada uno).
Ahora continuando con el tema de este post vamos de detallar las principales forma mostrar valor en nuestro contexto actual, siempre según mi humilde punto de vista.

Manifestaciones del Valor

"Comenzar algo solo y con las manos vacías asusta al mejor de los hombres. También dice muchísimo de cuán seguros están de que Dios está con ellos." [Un relato de los tres reyes]

Antes que nadie salte por la palabra "Dios" en el texto, e independientemente de mi fé, quise poner este extracto para mostrar la primera manisfestación del valor, "Las Convicciones".
Se puede decir que una persona es valiente cuando sus convicciones están sobre la realidad que sus sentidos le indican y lo que la razón aplicable en ese momento. Son estos tipos de personas que van mas allá de la media y son los verdaderos agentes de cambio. Son aquellos que gustosamente abandonan su zona de comodidad y se lanza a la exploración de nuevos terrenos por la promesa de cambio.
En la biblia define en forma muy sintética este tipo de comportamiento, "La certeza de los que no se conoce, la convicción de los que se espera", en Otra palabras "Fe", una persona que tiene fe en sus convicciones es una persona Valerosa.

"La oportunidad no es obligación". [Mile Nappa]

En esta frase, aunque muy oculta, esta la segunda manifestación del valor. "Decir que no"
Una de las primeras pruebas que tenemos que pasar cuando queremos ser diferentes y demostrar nuestro valor es "Decir que no". Tom Peter en su libro "La empresa de Servicios Profesiones " dice: "A cuantos clientes le a dicho que no en este tiempo?, Cuantos negocios ha dejado pasar? esta es una muy buena medida de su madurez". Decir que no es una
de las poderosas manifestaciones de valor. Esto demuestra 2 cosas, que tiene su visión clara y que tiene la madures para seguirla. Usted puede equivocarse en una decisión o en juicio de valor sobre algo, pero si pierde su visión y su personalidad, ya no es nadie. Se convertirá en uno mas de la masa. Ahora basta de retorica, decir que no, a que? Es muy simple, a lo vea en contra de su visión y mision en la vida, por ejemplo nosotros en Smallworks respetamos el ser humano como tal y conocemos lo que pasa(sufre) un profesional cuando es enviado a un cliente en el modelo de "Man Power". Es por eso que nosotros no hacemos "Man power", no importa el dinero que haya atrás. Smallworks no hace "Man power" y se los digo por experiencia, hay que ser muy valiente para decirle que no a un cheque "Gordo" cuando no tenes para el colectivo (autobus). Pero si lo aceptaramos no seríamos SmallWorks, seríamos algo que no queremos ser.

"Es una perdida de tiempo diseñar e implementar una estrategia de cambio hasta que no se descubre y acepta la realidad presente. Si no sabe donde está, es imposible llegar a donde tiene que estar. Lo que no sabe lo puede matar"[Andy Stanley]

Otra manisfestación del valor es reconocer la realidad de los que estamos viviendo, hay muchisima gente que se encierra en un mundo irreal para no enfrentar sus miedos y comenzar un cambio real de sus vidas, trabajo, pareja, en fin de todo su entorno. Sobre este punto puedo escribir horas pero lo voy a resumir en 7 "No" para asegurarnos que vivimos lo que "Es" y tenemos los pies bien plantados la tierra, porque esto también es valor:

  1. No fingir lo que no es

  2. No hace la vista gorda

  3. No Exagerar

  4. No Matar al mensajero(cuando trae malas noticias)

  5. No Esconderse detrás de las estadísticas y numero(perdiste a un empleado, no al 2,5% de tu Staff)

  6. No Obviar la critca (constructiva o no, muchas veces en la maldad de otros, verdades ocultas hay)

  7. No aislarse


  8. Vea la realidad y si algo no le gusta "Cambielo"
.

"Las cosas se crean 2 veces, una en tu mente y las segunda en la realidad".

No tengas pequeños sueños, porque no apasionan los corazones de los hombres

En estas dos frases tenemos la ultima manifestación de valor que voy a sitar. Se por experiencia propia que es imposible el cambio sin sueños, que es imposible alcanzar ese estado que llamamos valor sin tener una meta en mente, sin tener enfrente un horizonte que justifique el esfuerzo de luchar contra el status quo. Las sociedades que se quedan con lo actual, están perferctamente preparadas para una realidad que ya no existe. Si quiere ser una persona valoroza atrevase a soñar en algo mejor, planifique y actue en consecuencia.

martes, 8 de abril de 2008

Caminando con Pier #3 - Configuración de acceso

Dado que vamos a hacer una página institucional (o personal, da igual) y no una wiki, necesitamos establecer un diferencias entre lo que cualquier usuario puede ver y lo que yo, que soy el administrador, veo. En principio, necesitamos ocultar para el visitante todas las opciones que aparecen en el sidebar, con la única excepción del login.
Este proceso es muy simple, pero bastante complejo de explicar (y requiere varios pasos), así que si no se entiende, agradecería sus comentarios... así puedo arreglarlo. 
Importante: Las páginas iniciales (aquellas que fueron creadas en el proceso de instalación) no tienen asignado un dueño específico y por lo tanto son de acceso público visibles en todo momento. Como regala general, siempre que una página carezca de dueño, por defecto será editable por todos los que puedan verla.

A. Login de usuario administrador
Esto es lo primero que debemos hacer, para poder cambiar todos los derechos de acceso.

Seleccionar “Login”, del sidebar.
La configuración inicial tiene como usuario administrador a “admin” con password “pier”.
El login de Pier. Por defecto el nombre es "admin" y la contraseña "pier"

B. Cambio de dueño y grupo de las páginas
Una vez ingresados, debemos cambiar el dueño de la página principal.

Seleccione “Change Owner”
Marcar “recursive” y seleccionar “admin” como el nuevo “Owner”. Eso hará que todas las páginas hijas de la página principal pasen a pertenecer al usuario “admin”.

Permisos del dueño. Permite cambiar el dueño y la visibilidad del componente para un usuario determinado.
 
Y repito la operación para el grupo:
Permisos del grupo. Permite cambiar el grupo dueño y la visibilidad del componente para ese grupo.

Con esto logramos ser los dueños de la página principal y de todos los hijos.

Importante: No hay que cometer el error de hacer logout ahora, pues no hemos asignado derechos de lectura a usuarios generales ¡Si lo hacemos, no podremos ver absolutamente nada y habrá que repetir el proceso, o resolverlo desde el Pier-OmniBrowser! (que no cubrimos aquí)

C. Agregar propiedades de solo lectura para otros usuarios
Ahora, solo queda agregar derecho de lectura para cualquier usuario que no sea administrador.
Eso tiene dos pasos: 1) Habilitar derecho de lectura general y 2) deshabilitar otros derechos.

1. Habilitar derecho de lectura general.
De las opciones del sidebar, seleccionar “Change Other”, marcar “recursive” y seleccionar “View” de la lista de permisos.

Permisos de "otros". Permite cambiar la visibilidad del componente para usuarios no logueados (Por ejemplo, visitantes comunes de la página).

Con esto asignamos derecho de lectura a todas las páginas a un visitante cualquiera de la página.

2. Deshabilitar derecho de lectura en páginas específicas.
Con el paso anterior habilitamos a un visitante a ver todas las páginas, pero hay aún algunas páginas que no deberían verse: Los que permiten visualizar la página (logs, historia, etc.) y los links del header, “Environment” e “Information”.

2.1 Ocultando visualización de la página
Seleccionar el link “Environment” y luego “Sidebar>Views”.

Del sidebar, seleccionar “Change Other”, marcar “recursive”, seleccionar “remove” como Operator y seleccionar “View” de la lista de permisos.
Eliminación de permisos de "otros"

2.2 Ocultando páginas del menú
Ahora vamos a ocultar los links “Information” y “Environment”.
Seleccionar el link “Information”
Del sidebar, seleccionar “Settings” y marcar “Hide from menus”.

Configuración general de una página. Edición de título y visibilidad. 

Repetir la misma operación para “Environment”

Importante: El componente “Environment” es el componente principal de la aplicación, porque define la estructura general de la misma (header, footer, contents, sidebar, todo absolutamente), aunque es “hijo” de la pagina principal, también la define a ella.

Con esto hemos completado la configuración de la página. Si hacemos logout, podemos ver que hemos ocultado todo lo que debía ser ocultado, dejando habilitado una opción de login para poder realizar la administración de la página.

Así queda la aplicación luego de configurar los derechos de acceso y "desloguearse"

Ahora estamos listos para lo que realmente importa, que es armar la página de nuestra empresa... pero para eso habrá que esperar hasta mañana.

¡Hasta luego!

lunes, 7 de abril de 2008

Caminando con Pier #2 - Instalación

Como había prometido, aquí esta la primer entrega de la mini-guía de pier. Me colgué un poco y tardé en empezar, pero a partir de hoy, me comprometo a poner una parte por día (y no son tantas partes, por ahora cuento 4).
En esta primer entrega, haré la parte mas simple: la instalación. Aunque sea un paso un poco trivial,  espero que les sea de alguna utilidad. Además, el primer paso para empezar a usar un programa es tenerlo instalado :)

Instalar Pier desde una imágen 3.10 es bastante simple, requiere seguir estos pasos:
  1. Bajarse una imágen 3.10: Squeak3.10-7159-basic.zip
  2. En la imágen seleccionar el “Package Universe Browser”.
  3. Actualizar los packages, seleccionando "Update list from network"
  4. Seleccionar e instalar “Pier version current” (esta en la sección "Web Development")
  5. La instalación pregunta por un usuario y password de administración, para este ejemplo yo puse admin/admin. 
  6. La instalación pregunta si quiero crear una aplicación de Seaside para Pier, le digo que sí.
  7. Nombre del kernel: “Smallworks”
  8. Entry Point: “smallworks”
  9. Puerto: 8080
¡Listo!

La instalación estándar de pier me deja una aplicación corriendo, en este caso en http://localhost:8080/seaside/smallworks

Así se ve una instalación default de Pier

Alternativa: Instalando desde monticello
El metapackage “Pier version current” instala un montón de cosas, aunque a veces no las más nuevas. Esto es particularmente crítico porque tanto Seaside como Pier se actualizan muy frecuentemente, y a veces nos conviene -o simplemente queremos- tener versiones más nuevas.
El siguiente es un script que hace lo mismo que el metapackage que instalamos, pero con las últimas versiones (a la fecha):

"******************************"
"Level Playing Field (LPF)"
"Esta línea se baja de internet la última version del LPF, es necesario para poder instalar los últimos packages."
"******************************"
(HTTPSocket httpGet: 'installer.pbwiki.com/f/LPF.st') readStream fileIn.

"******************************"
"Comanche"
"Comanche es el servidor web default de Seaside.
Lo instalo de Universe, porque es bastante estable y no ha cambiado en los últimos tiempos"
"******************************"
Installer universe
addPackage: 'KomHttpServer(7.0.30)';
addPackage: 'KomServices(1.12)';
install.

"******************************"
"Seaside con Scriptaculous"
"Instalo la última versión estable de Seaside 2.8 y de Scriptaculous.
Las últimas versiones son distintas de las del universo, así que instalo las que estan en
el SqueakSource"
"Este paso pedirá el nombre y contraseña para el usuario administrador de Seaside"
"******************************"
"Seaside + Scriptaculous"
Installer ss project: 'Seaside';
install: 'Seaside2.8a1-tbn.539.mcz';
install: 'Scriptaculous-mb.239.mcz'.

"******************************"
"Magritte"
"Pier utiliza Magritte para describir los componentes, las versiones se encuentran en el
repositorio de lukas renggli (creador de magritte, además de pier)
"******************************"
Installer lukas project: 'magritte';
install: 'Magritte-All-lr.261.mcz'.

"******************************"
"Pier"
"Pier también esta en el repositorio de lukas
Como curiosidad: Pier-All no instala el componente de blog, ni el de persistencia,
así que los instalamos explicitamente"
"Este paso preguntará si se desea publicar una apliación pier, y los datos correspondientes"
"******************************"
Installer lukas project: 'pier';
install: 'Pier-All-lr.282.mcz';
install: 'Pier-Blog-lr.72.mcz';
install: 'Pier-Squeak-Persistency-lr.1.mcz'.

"******************************"
"Limpieza"
"Esto limpia los cachés de monticello, que engordan bastante la imágen, y luego de
la instalación son inútiles"
"******************************"
MCFileBasedRepository flushAllCaches.
Smalltalk garbageCollect.
Este proceso deja algunas cosas sin instalar que el paquete del Universe instala: el Pier-OmniBrowser y sus dependencias, pero como en esta guía no lo voy a usar, los dejé a fuera.

Eso es todo por ahora, el paso de mañana es "Configuración de usuarios y derechos de acceso"

¡Hasta luego!
 

 

jueves, 3 de abril de 2008

Grupo

Hace menos de un mes comencé mi tercer año de Psicología Social. Cuanto más aprendo, más me convenzo de lo útil que puede resultar esta disciplina aplicada a nuestros equipos de desarrollo. Metodologías agiles como Scrum hacen especial enfasis en la autogestión de los grupos. El Dr Enrique Pichon Riviere define al grupo como un "Conjunto restringido de personas que ligadas por constante de tiempo y espacio y articuladas por su mutua representación interna, se propone en forma explícita o implícitamente una tarea que constituye una finalidad, interactuando a través de mecanismos de asunción y adjudicación de roles.". Muy loco, resulta ser que nuestros equipos de trabajo, al menos para Pichón Riviere, son grupos!

Lo de las personas ligadas por constante de tiempo y espacio queda más o menos claro, todos llegamos entre las 9 y las 11, y nos vamos a las 18 clavado :)

La tarea que constituye una finalidad, también está claro, somos un equipo de trabajo con algún objetivo claro. Puede ser un proyecto, mantenimiento, soporte o lo que fuera, pero sabemos para qué estamos trabajando.

Articuladas por la mutua representación interna está un poco menos obvio. Esto se basa en el concepto de comunicación que dice que la comunicación entre dos personas siempre es triangular, o sea, hay un emisor que emite un mensaje hacia un receptor, una persona que habla y emite sonidos que fisicamente son escuchados por el receptor, pero además de estas dos personas físicas, el emisor en realidad simboliza su mensaje hacia un receptor que está dentro de su cabeza y que es una imagen del receptor físico que tiene delante. Esto genera un cierto grado de distorsión en la comunicación ya que esa imagen internalizada está distorsionada por cantidad de información previa suministrada por el subconsciente (historias previas con el sujeto, prejuicios, estereotipos o transferencias) En el grupo esto funciona plenamente. En primer lugar genera cohesión en el grupo ya que uno tiene internalizado a todos los integrantes, esto hace que a veces cuando falte alguien, igual esté presente porque los demás lo hacen participar en sus imaginaciones "Si estuviera fulano te hubiera dicho que eso está mal". Por otro lado esta representación interna también articula los mecanismos de funcionamiento del grupo, ya que hay una transferencia de lo conocido a esas imágenes internalizadas de mis compañeros de grupo. Por ejemplo es muy probable que algún fulano me resuene parecido a mi hermano, entonces mis reacciones hacia fulano van a ser bastante resonantes con las que tengo con mi hermano. Eso a su vez hace que fulano me incorpore de una determinada manera y tenga reacciones que reacomodarán mi representación de fulano.

Todas estas interacciones que van formando y reacomodando la mutua representación interna configuran los mecanismos de asunción y adjudicación de roles. Estos mecanismos son únicos para cada grupo y además en un mismo grupo también van evolucionando en el tiempo. Estos roles no están asociados al cargo asignado formalmente en el equipo de trabajo, sino a los roles que dinámicamente se van adjudicando y asumiendo en el devenir del trabajo del grupo.

Bien, muy lindo todo, y qué aporta esto al desarrollo de sistemas. Nada y mucho a la vez. Los equipos de desarrollo son grupos de trabajo, y querramos aceptarlo o no, se van a mover mediante las reglas descriptas. Pretender definir procesos que encierren a los integrantes del grupo en un molde donde cada perfil tiene que responder de una manera premoldeada, es negar nuestra naturaleza humana. Se pueden delinear roles y responsabilidades, pero no se puede esconder nuestra naturaleza creativa.

Bueno, otro día sigo

Whiteboard, creo que terminé

Bien, en whiteboard manejamos posts. Cada usuario tiene una colección de posts, cada post tiene n usuarios asociados y el mismo post existe en cada una de las colecciones de los usuarios a los que pertenece.

Esto nos da una herramienta para organizar la información y compartirla a la vez.

Y vuelvo con un ejemplo.

Supongamos que tengo:

Un post con titulo smallworks y sin tags

Un post con título whiteboard y tags smallworks

Un post con título officious y tags whiteboard proyecto


Un post con titulo tracker y sin tags

Un post con título bug y tags tracker

Un post con título requirement y tags tracker


Si cargo un post con los tags bug officious, automáticamente este post va a recibir los tags whiteboard proyecto smallworks y tracker, esto nos va a permitir filtrar, por ejemplo, por tracker+officious para ver todos las entradas del tracker generadas para officious o también podría filtrar por bug para ver todos los bugs cargados para todos los proyectos


Ahora bien, qué se hace con eso? Para poder adaptarlo a cada situación hay un mecanismo de plugins. Cada plugin sabe qué tipo de post crear y cómo mostrarse en el menú.

De esta manera crear una aplicación que administre contenidos consiste en crear los tipos de posts necesarios y el plugin que sepa crearlos, de hecho, el plugin también es opcional. Es así como basandonos en whiteboard logramos construir officious que es una aplicación análoga a un foro, un sistema de subastas y estamos trabajando en un sitio de administración de activos. Para todo esto solo hizo falta crear nuevos plugins. 


Todavía le falta mucho, es cierto, pero la verdad es que así como está ya nos dio muchas satisfacciones.

Whiteboard, te queremos!