Ezequiel Gutesman: Teorias acerca de otras mentes

   Publicado: Disclaimer: Este NO es un post computronico pero debo advertirles que es un poco volado (al menos el tema que trata). Si esperan algo mas terricola salteen este post.

Un amigo me prestó un libro Titulado Sistemas emergentes. O qué tienen en común hormigas neuronas, ciudades y software. de Steven Johnson. El libro es una especie de introducción un tanto computrónica a la inteligencia colectiva, este término refiere a la inteligencia que (con un apropiado uso del término) emerge de la interacción de indivduos (personas/animales/programas) con comportamiento de cierta forma acotado y atómico. Un ejemplo recurrente en el libro son las hormigas.

Las hormigas forman colonias y poseen un comportamiento bastante elemental como individuos. Una hormiga puede decidir cargar comida y llevarla al hormiguero, recolectar cadáveres y llevarlos al área que la propia colonia designó para esto. El asunto es (brevemente, ya que no es el propósito del post) que la colonia como una unidad tiene comportamiento del cual los individuos que la componen (las hormigas) no son conscientes, ni siquiera saben que está'ocurriendo, y por supuesto, tampoco ejercen una conducta que lleve a estos resultados colectivos. En fin, esa es muy brevemente, una posible explicación mediante un ejemplo de lo que significa el comportamiento emergente.

Pero dentro del libro, descubrí un tema que realmente me interesa, y es la capacidad del ser humano de elaborar teorías acerca de otras mentes. Y me voy a detener un rato en contar de qué se trata esto con 2 ejemplos sacados del libro:

La prueba de los smarties (Perner, Leekam, & Wimmer, 1987)


Si clickean en la imagen la van a ver mas grande. Pero aca va al traducción: Una maestra muestra a un niño una caja de smarties (unas pastillitas de chocolate muy conocidas, que vienen en tubito) y le pregunta:
- "Qué hay dentro de la caja?", a lo que el niño responde
- "Smarties."
- "No. Hay un lápiz." Responde la maestra.
Entretanto la maestra le cuenta que otro adulto (Jose) se va a incorporar a la charla, y le dice que Jose no vió el contenido de la caja. Entonces le pregunta al niño:
- "Si le muestro el paquete a Jose y le pregunto 'Qué pensas que hay en la caja'? Que pensás que me va a contestar?

Y aquí la diferencia: Un chico de 4 años respondería (en general y correctamente) "Smarties" pues sabe que le va a pasar igual que a el, que pensó que había eso. En cambio, uno de 3 años contestaría "un lápiz", erróneamente. Esto es a lo que me refiero con las teorías sobre otras mentes.

Algunas definiciones que encontré sobre este tema:


  • "Teoría de la mente": Es la atribución de estados mentales (e.g. pensamientos, creencias, deseos, intenciones) a otros (y uno mismo)(Premack & Woodruff, 1978).



  • Ojo que acá "mindreading" es como se lo llama nomas, no es nada paranormal...

    El entendimiento de estados mentales (lectura de la mente/mindreading) nos permite explicar eventos observables (acciones) mediante la inferencia de entidades no observables (creencias, deseos, etc.)


  • También involucra entender que los estados mentales del otro pueden diferir de los de uno mismo, y también pueden diferir con la realidad (lo que sea que sea la realidad :D) (por ej: falsas creencias, intentos insatisfechos)


Bueno, podría seguir escribiendo pero tengo este post en el tintero hace demasiado tiempo asi que corto acá, y quiza hago otro post después.

Unos links que pueden ser útiles para entender de que se trata esto:

La pagina de Malinda Carpenter: Esta mujer hizo una cantidad notable de estudios sobre el comportamiento de los chimpances. Les recomiendo leer su material.

Un curso de M. Carpenter [slides]. Esta muy bueno este PPT es como un resumen de un montón de laburos de muchas personas.

Shared intentionality. Lo escribieron M. Tomasello y M. Carpenter. Hasta ahora, los que me parece hicieron mas laburo en este campo.

Psychological projection: La visión de Freud de este fenomeno (Wikipedia)

Theory of mind (Wikipedia)

Este es un breve escrito sobre la relación entre la teoría de otras mentes y los "False Beliefs"

The mathematics of human thought. Quiza no tenga mucho que ver con lo que escribí, pero me parece que puede interesarles si llegaron a leer hasta acá (en realidad no tiene NADA que ver).

RECURSION AND HUMAN THOUGHT: WHY THE PIRAHÃ DON'T HAVE NUMBERS

\g

Francisco Malbrán: Paseos mentales

   Publicado:
La vida resulta un eterno signo de pregunta en el cual mirarse y reflejarse casi narcisísticamente (y eso más por mi inercia que por mi decisión muchas veces). Todo ese misterio resulta más que interesante, pero a veces, para cuando me di cuenta, estoy agobiado.
En esos momentos pienso que es posible poner la mente en blanco. Deshacerme. Desandarme. Irme hacia atrás caminando por mi historia como paseando, mirando sin sacar conclusiones.
Quizás paseando por la historia sin preguntarme incisivamente como suelo hacer, llegue a encontrar lo que busco cuando estoy consciente. Cuando estoy pendiente de los "por qué", al acecho de cualquier pista que me diga cómo, de un momento a otro, uno se convierte de pronto en lo que es, y deja de ser lo que fue.
Estos viajes muchas veces me atrapan pensando, cuál será el equilibrio entre esperar pacientemente al mejor estilo oriental (y sostener: todo llega a su debido tiempo), y buscar desesperadamente (pensando quizás: el que no busca, probablemente no encuentre)

Me di cuenta de que el aire está lleno de preguntas, aún cuando sólo quiero respirar. Siento los pulmones llenos de incógnitas y al expirar entiendo un poco más de todo lo que no entiendo.

Vaya uno a entenderse

Pablo Alejandro Costesich: ikariam

   Publicado:

Hace ya unos cuantos días que no había escrito nada, y menos algo relacionado con los juegos. Este blog solía tratarse sobre tecnología, pero después cambié para incluir más contenido... Así que acá vamos.

Hoy voy a tratar el tema de Ikariam, un juego online al estilo del archiconocido -y por mí aburrido- Ogame. Al principio, no le encontraba la vuelta de lo interesante que podía ser tener uno de estos mundos y competir entre usuarios por recursos, pero no fue hasta este juego que me volví adicto al género.

Paso a explicar las características del juego de forma resumida:

  • Es un mundo persistente, que transcurre a tiempo real.
  • Obviamente, es multiplayer.
  • Se comparte una isla y los recursos en ella junto a otros jugadores, a los que se los puede atacar o aliarse a ellos.
  • El juego se basa más que nada en los recursos y economía de compra-venta. Mientras más oro, madera, mármol, vino o azufre se tenga, más poder hay.
  • Como el juego corre en tiempo real y NO necesita un cliente dedicado (se puede jugar desde cualquier navegador web actual), uno puede irse a dormir, cenar tranquilo y conectarse desde un Debian o un FreeBSD sin importar el equipo.
  • Hay que tener habilidades comerciales y diplomáticas. Eso ayuda un montón.

Por otra parte, a pesar de que parece tan difícil de entender, no es así. Uno tiene tiempo para tomar sus decisiones ya que todo transcurre en lapsos de horas o minutos, incluso días enteros.

El juego es gratis, y tiene varios servidores. Uno empieza en una isla con un solo edificio, que es el centro cívico de donde se maneja casi todo lo referente a la diplomacia y prosperidad de tu ciudad (o Polis). A medida que avanza el tiempo, uno va recolectando recursos del área y puede construir, entre otras cosas, puertos y mercados, academias y campamentos militares, murallas y castillos.

Claro, mientras más pasa el tiempo, más aldeanos tendremos que tener, y más recursos gastaremos. Llegará el momento en donde tengamos que crear otros edificios para garantizar el ocio (después de todo, el ocio y placer es el principal motor de la actividad humana en el caso de tener las necesidades básicas cubiertas).

Al momento de redactar estas líneas, mi pequeño imperio ha ido en franco desarrollo y ha ampliado sus fronteras comerciales con uno de los vecinos de la isla, sin contar a Siramek, quien me llevó al juego y a quien me debo como un aliado de por vida.

Cabe hacer una aclaración, todavía no entré al foro del juego, cosa que suelo hacer en otros lados.

Ezequiel Gutesman: Cape Town Open Education Declaration

   Publicado:

La verdad es que ya hice un post sobre esto en otro blog, pero parece que no intereso como pense que lo iba a hacer.

De todos modos ahora que tengo mi blog ( :D ) voy a expresar algunos pensamientos sobre esta iniciativa.

Qué es esta decalaración?


Básicamente se trata de un listado de puntos sobre el uso de recursos libres en la enseñanza.

La declaración la pueden encontrar en español acá. Entre otras cosas que me gustaría destacar sobre esta iniciativa estan:


  • Uso de recursos educativos libres, como ser "materiales de cursos con licencias abiertas, planificaciones de clases, libros de textos, juegos, software y otros materiales que apoyen la enseñanza y el aprendizaje".

  • Uso de "tecnologías abiertas que facilitan un aprendizaje colaborativo, flexible y en el compartir practicas de enseñanza que facultan a los educadores a beneficiarse de las mejores ideas de sus colegas".



Muchas veces me veo discutiendo el por que SI el software libre. Las personas con las que constructivamente discuto piensan que están intentando que un testarudo idealista cambie de idea, puede ser, no se. Lo que si se, es que el uso de tecnologías de software libre y de licenciamiento libre (es decir, material no-software distribuido bajo licencias que autorizan compartirlo, modificarlo y redistribuirlo, por ejemplo Creative Commons) permiten que el intercambio sea mas ágil, mas provechoso para la comunidad y para las generaciones futuras.

Desde el punto de vista educativo (al que me interesa llegar) es importante ver cómo repercute sobre la formación de nuestros alumnos el hecho de poder compartir lo que es de su autoría.
Una vez (hace un par de horas... ) un compañero educador que respeto mucho me dijo "Si a los chicos no los dejas escribir y ser autores, entonces lo que vos escribas no lo van a leer, de ninguna manera". Esto es buenisimo, qué pasaría si transpolamos esta idea al aprendizaje y al conocimiento?

Creo que dejar ese rol exclusivamente expositor al momento de dar una clase colabora a la incorporación de conocimiento.

Creo que incitar a que los recursos sean libres y no privativos (repito que no me refiero solo al software) colaboran a formar otro tipo de apertura mental.

En fin, ojalá les quede clara mi postura y ahonden un poco mas en recursos libres para la enseñanza.

Les dejo algunos links interesantes sobre los temas que mencioné y otros que no.

Iniciativas para educación libre: Un listado de inciativas relacionadas con la declaración de Cape Town.

Creative Commons: Esquema de licenciamiento libre para distribuir trabajos en general (educadores, cientificos, artistas, etc.) con distintos niveles de proteccion de la propiedad intelectual.

Free Software en Wikipedia: Explicacion del termino y un poco de historia.

Free Software Foundation: Eso.

Pagina de R. Stallman: Ferviente activista y fundador de la FSF.


\g

Pablo Alejandro Costesich: DEFCON III

   Publicado: Al momento que estoy escribiendo esta entrada, a la madrugada de este día ocurrió ese eclipse lunar y yo me había tomado una copa de New Age que encontré en la heladera y me daba pena desperdiciar. ¿Qué tiene que ver? Que, obviamente como pueden ver, no estaba en pleno uso de mis facultades mentales al momento de la batalla... Que vendría a ser una tercera guerra mundial.

Claro que para jugar DEFCON ya hay que estar un poco loco, pero lo mejor de todo es que mientras más cosas que son impredecibles hacés, mejor. En mi caso, jugué como casi siempre, pero hice un par de ataques que son dignos de un loco. ¿Quién en su sano juicio habría de poner los submarinos en modo de ataque AL LADO de las bases aéreas? ¿Quién mandaría un ataque por el camino más largo y otro por el más corto, dejando la otra mitad de la flota sin hacer nada? Sólo un loco... O borracho (con una copa ya me basta).

Bueh, a pesar de eso, gané, pero por muy poco. Acá subí unas fotos de unas cuantas partidas, así se entretienen.

Cabe destacar que los juegos de DEFCON profesionales duran poco tiempo, apenas llegan a las dos horas y son masacres nucleares. En este último que jugamos con Les, pusimos los radares de tal forma que podíamos ver todo el territorio del otro, lo cual nos posibilitó atacar no bien fue DEFCON I y matarnos en menos de 3 horas. Lindo juego, fue rápido y casi profesional. Claro que las locuras que hicimos fue porque estábamos ambos pasados en una o dos copas.

Ah, otra cosa... Los juegos se extienden mucho por algo que se llama Disuasión Nuclear, que no es ni más ni menos que "Yo no te ataco para que vos no me ataques". El que jugó Balance of Power o vio Dr. Strangelove or how I learned to stop worrying and love the bomb sabe bien lo que digo.

Último offtopic: la película que mencioné es de Kubrick, uno de los mejores (sino el mejor) director de cine de la historia. En 2001, Odisea en el Espacio, Kubrick al parecer le encargó a Pink Floyd que haga la música de la última parte de la película... Track que pasó a llamarse Echoes, el cual estoy escuchando ahora.

Ezequiel Gutesman: RFC: Traits para PHP

   Publicado: 22-02-2008 Disclaimer: Este es un post computronico. Si esperan algo mas terricola salteen este post.

Leyendo la lista de internals de PHP (version web: http://news.php.net/php.internals) Stefan Marr mando un patch mas que interesante.
Se trata de una implementacion de Traits para PHP.

Pero qué son traits?


Traits son básicamente Behavioral Blocks (en castellano, bloques de comportamiento) que engloban "funcionalidad" (lo pongo entre comillas porque en realidad engloban funciones).

En general estamos acostumbrados (o no, depende del lenguaje de programación...) a usar interfaces y hacer que nuestras jerarquías de clase implementen esas interfaces. Por ejemplo: (en algún lenguaje de programació que se lo banque)


Interface LaInterface
{
   public void metodo1();
   public int metodo2();
   ...
}

interface LaInterface
{
   public void metodoA();
   public int metodoB();
   ...
}


class LaClase implements LaInterface, LaOtraInterface
{
   /* Aca deben estar implementados todos los
     * metodos de LaInterface y LaOtraInterface
     */
}

Pero qué pasa con las jerarquías de clases? A veces tenemos que elegir entre un diseño elegante y bien objetoso, respetando los conceptos que aprendimos en OOP (o_O) como abstracción, encapsulamiento, bajo acoplamiento, polimorfismo, etc. (debo admitir que los tuve que buscar... ya que no me los acordaba...) que respete el problema a modelar o bien, hacer un codigo mas pulenta y que sea mas reusable faltando un poquito nomas, a los principios puristas de la OOP.

Entonces tenemos jerarquías de clases, donde hay clases que extienden a otras, creando familias complejas de padres con hijos herederos de algunos metodos que pueden modificar, o no, visibles dentro de la familia, privados a la clase o publicos al mundo en general...

Pero a veces, tenemos funcionalidades que queremos que muchas familias disfruten, por ejemplo: queremos que todas sepan hacer asado, sean del origen que sean... ya que viven en Argentina.

Entonces supongamos el siguiente ejemplo:



Acá tenemos una jerarquí (no muy util por cierto) que modela familias, de distinto origen. Todas las familias tienen un apellido, y saben tener hijos (espero sepan entender el propósito ilustrativo del ejemplo).
Entonces las familias saben cocinar diferentes tipos de comidas, dependiendo de donde son originarios. En el caso de los tanos: cocinar pasta, risotto y canoli. Los japoneses cocinan sushi y saben tomar sake y los argentinos, sabemos hacer asado, tomar mate e ir a la cancha (yo no, no voy a la cancha :D).

Pero estaría bueno que cualquier familia que viva en argentina sepa cocinar asado y tomar mate (lo mismo vale para cualquier actividad...). Entonces podemos hacer un "paquetito", o Trait (que ni por asomo se parece a un package) con distintas "habilidades". Por ejemplo:

trait CostumbresArgentinas
{
   public void cocinarAsado(){
     // codigo para cocinar asado...
   }
   public void tomarMate(){
     // codigo para tomar mate...
   }
}

Entonces podriamos tener una clase por ejemplo:

class FamiliaItaliana
{
   use CostumbresArgentinas;
   public void cocinarRisotto(){...}
   public void cocinarPasta(){...}
   public void cocinarCanoli(){...}
}

Y tener facilmente una familia italiana que tiene costumbres argentinas (raro no???).

A mi me gusta pensar en una forma de atravesar una jerarquía de clases de manera horizontal, como intento mostrar en este dibujo (click para agrandar):



Traits para PHP



Hay muchos detalles con que lidiar, por ejemplo los conflictos. Qué pasa si 2 traits tienen métodos con igual nombre? quién los rsuelve?

En esta primer implementacion para PHP, los traits son "Aplanados" dentro del c&código de la clase, el propio lenguaje no decide a quién darle prioridad con los conflictos (como se hace en algunos lenguajes) esto se dejo a decision del programador. Uno puede hacer cosas como:

class Hablador {
    use A { !smallTalk }
    use B { !bigTalk }
}

Donde la clase Hablador tiene los metodos del Trait A y del Trait B, pero excluyendo el metodo smallTalk del Trait A y el bigTalk del trait B. También se pueden renombrar métodos al incluir un Trait en una clase.

Una ventaja que tiene esto es que no tiene penalizaci&ocauten en runtime, ya que solo es una forma de copy-pastear codigo de una manera formal entre clases.

Les recomiendo leer lo que escribio este hombre Stefan, esta muy bien explicado el caso para PHP.

Bueno, dejo de escribir porque si no se van a aburrir. Espero que se entienda lo suficiente para que si les interesa, lean mas.

/g

Lean aca.
Mas info sobre traits aca.
O pueden leer mas sobre esto en la Tesis de Nathanael Schäarli.

Ezequiel Gutesman: Primer post

   Publicado:

Hola,
bueno hace muchos meses que tengo este blog y esta vez me decidi a empezar a escribir.
Basicamente quiero que este sea un lugar donde volcar ideas, opiniones y demases. Son todos bienvenidos a discutir y eso..

chau!

Pablo Alejandro Costesich: XKCD

   Publicado:
Pueden considerarme un nerd, freak, geek... Todo lo que quieran, pero mi sueño sin cumplir es este:

Eso es un comic de XKCD. Siempre me sentí identificado con ese comic!!!

Pablo Alejandro Costesich: WolfKing

   Publicado:

Ph33r M3 1337 K3YB04RD!

Es impresionante, la verdad que anda excelente y te deja menos adoloridas las manos si es que tenés síndrome del túnel carpiano como yo. Toda persona que juegue fps' en una portátil o escritorio reducido que se precie debe tener un teclado para juegos, como este.



Pablo Alejandro Costesich: rolgps

   Publicado:

Por un tiempo fue un excelente proyecto. Me refiero a esta "enciclopedia de coordenadas" que hicimos entre Arlick, Sunos y yo. El proyecto en su etapa inicial alcanzó todas las expectativas y las superó conforme el paso del tiempo.

El problema viene con las licencias. No tengo tiempo para discutir si puedo o no usar el material del juego, quiero concentrarme en los estudios y vacaciones, no en un juego que debería ser un espacio de ocio. Alguno de estos días voy a mandar un mensaje a los que poseen la licencia de propiedad intelectual para pedirles permiso de uso en la aplicación.

Por otra parte, prefiero dejar el proyecto en segundo plano por la tecnología que estoy usando. Los threads hacen un trabajo HERMOSO en el tema de búsquedas, pero tener que esperar 3 segundos para parsear un archivo completo de XML me enerva. Tiene que haber una forma más rápida sin usar bases de datos y manteniendo la tecnología de XML para leer un archivo de más de 8000 líneas (de los cuales hay arriba de 1000 objetos).

El nuevo proyecto planeaba implementar un mapa, poner las opciones por ficheros XML, tener un motor totalmente independiente de la aplicación (la idea era tener dos, de los cuales elegir) y ser totalmente actualizable desde la base. ¡Incluso, la idea era que pueda admitir "mods" para distintos juegos! Más adelante podíamos incluir áreas, trazados de mapas por vectores y miles de cosas por la modularidad del proyecto.

La cuestión radica en que esto requiere no sólo conocimiento, sino que tiempo y esfuerzo para obtenerlo.

Vamos a ver qué puedo hacer en las próximas semanas.

Share