martes, 1 de abril de 2014

El juego que nos robó el alma a todos

Hoy les quiero hablar sobre un juego que ha tomado por completo el alma de muchos de nosotros, el infame 2048 (http://gabrielecirulli.github.io/2048/). Es posiblemente uno de los juegos más simples y minimalistas que he jugado y, sin embargo, uno de los más enviciantes. Una vez empiezas a jugarlo, simplemente no puedes parar hasta ganar.

LIKE A BOSS!

Pero la cosa no termina ahí. Una vez ganas, sientes que tu alma es libre y puedes volver a tu vida regular. ¡Pero es un engaño! Siempre saldrá alguien con una idea loca para retarte. El primer reto más allá de la victoria es lograr construir la elusiva celda 4096. Confieso que aún no lo he logrado, pero he estado cerca. Hay otros abusadores que incluso han llegado a 8192, pero ellos ya pertenecen a otra dimensión. XD También está ganar el juego en su versión Doge, lo cual sencillamente tienen que jugar: (http://doge2048.com/). Esto si es mucho más sencillo de lograr, ya que la estrategia a seguir para ganar es la misma. ¡Pero los Doge que aparecen son lo máximo! Many game, such points, so doge, wow!

Un reto divertido que afronté hoy fue el de perder con la menor puntuación posible. ¡Es super difícil! Las probabilidades no están a favor de uno y cualquier movimiento en vano puede sumar un montón de puntos de una sola vez. Estuve un rato dándole y logré (a punta de suerte y estrategia) una puntuación casi insuperable, jajaja. ¡Estoy orgulloso! Un miserable, escueto e insignificante 36. :D

Reto: Hagan menos puntos que esto.

Además de los retos normales, han surgido un montón de ideas para programar nuevas versiones e incluso inteligencia artificial para resolver cosas usando este juego (cuidado y se vuelve un tópico interesante de investigación académica). Por poner un ejemplo, está un evil 2048: La posición de las nuevas fichas no es aleatoria, sino la peor posible. También existe un Fibonacci 2048: Usa los números de la secuencia de Fibonacci, en vez de las potencias de 2. Yo tengo una idea para implementar un Origami 2048, pero lo haré cuando tenga más tiempo libre.

¿Próximo parcial de Lenguajes?

En fin, es un excelente juego que muestra los principios de buen diseño de forma elegante y concisa. Todo mi respeto para el implementador: Gabriele Cirulli (@gabrielecirulli en Twitter), así como para los diseñadores/implementadores de los juegos en los que está basado (1024 y Threes). Y esto era lo que quería compartir por ahora. Hasta una próxima entrada. ¡De vuelta a la no-procrastinación! XD

lunes, 17 de marzo de 2014

Lo bueno, lo malo y lo feo

Ya va más de un mes desde que comenzó este ciclo de protestas y 15 años desde que estamos hundiéndonos poco a poco en un mal llamado "socialismo". En el pasado se han cometido muchos errores con respecto a como se debe llevar una protesta y muchos de estos dejaron valiosas lecciones para el futuro. Lecciones que han sido completamente ignoradas nuevamente. Por eso, en esta ocasión quisiera compartir las cosas buenas que tienen estas protestas, las malas y las que son sencillamente absurdas (las feas).

Everywhere indeed!

Lo bueno:

¡Finalmente se entendió! Lo más importante a la hora de una protesta no es hacer daño, sino informar. Claro, no todos han entendido esto, pero otros cuantos si. Se han propuesto muchas alternativas completamente pacíficas e informativas. ¡Los desvíos informativos son posiblemente una de las mejores ideas que se ha tenido en los últimos 15 años! Se puede transmitir un mensaje que llega a muchas más personas, ya que el transito fluye. Las personas que pasan no sólo se enteran, sino que se sienten empáticos con tal medio, pues los trata con respeto y no les ha privado de sus libertades. ¡Aplaudo y apoyo estas iniciativas siempre! También ha habido otras propuestas interesantes como los pancartazos en el metro o simplemente ir por ahí discutiendo con quien se pueda sobre lo que pasa. El medio más efectivo es siempre el empático.

Lo malo:

Así como creo que la información y las pancartas son una idea genial, creo que deben buscar presentar problemas reales. Pancartas que sólo digan "Fuera Maduro" o "Chavez está muerto, supérenlo", son completamente inútiles y provocadoras. Cuando la protesta se vuelve una sátira, pierde significado. Una de las pancartas más sin sentido que he visto decía "¡Maduro ilegítimo! Queremos un presidente Venezolano." Gente... Hay que concentrarse en los problemas, no en intentar por todas las vías posibles invalidar la pasada elección. Fraudulenta o no, ya el mal está hecho. Además, recuerden que Chavez era Venezolano y Diosdado también lo es. ¡Protestas con sentido por favor!

Lo feo:

Mi querida USB... Desde el 2007 (y fugazmente en 2009) no te veía tan mal. Las mentes más brillantes de Venezuela unidas para repetir una vez más la mayor estupidez de nuestra historia reciente: Reclamar por la libertad, privando a los demás de ella. ¡Esto es total y completamente absurdo! Una vez más, paredes de pupitres adornan las puertas de los edificios con mensajes agresivos y excluyentes. ¿Realmente creen que van a lograr algo así? En vez de inspirar a más gente a unirse a sus protestas, están alejando muchísimo más a potenciales aliados. Y apartando eso, es excepcionalmente irónico hasta un punto que es casi ridículo. Nos molestamos con el Gobierno por querer imponernos su punto de vista, mediante ataques psicológicos (que han llegado ser físicos) y privaciones de libertad. Adivinen que... ¡Si están apoyando estas acciones coercitivas, son igual de malos que ellos!

Claro, esto se suma a la maravillosa (not) idea de guarimbas y barricadas que han emergido en todo el país. Estas construcciones improvisadas deben servir como protección en contra de ataques de un enemigo y en ese sentido están más que bien. Pero se ha trastornado su objetivo al de fastidiar a todas aquellas personas que no compartan la modalidad de "lucha" que a dichos guarimberos les parece "la correcta". El que sale a ganarse la vida es inmediatamente un traidor pues "no pone a su país primero". Es el argumento más vacío y fanático que pueda hacer una persona. Justifican su comportamiento autoritario basado en una ideología política. ¿No les suena familiar? Exactamente lo mismo que hace el gobierno. Lamentable y decepcionante, desde muchos puntos de vista.

Espero realmente que esta situación cambie prontamente. Del país entero no se puede pedir demasiado, pues no todos están educados para ser críticos y de alta calidad moral. Pero que mi alma mater, mi querida USB, se preste para tales actos de autoritarismo me parece increíble. Deberíamos ser la universidad de la excelencia y poco a poco de excelente nos está quedando sólo el nombre. Espero equivocarme, pues el cariño que le tengo a mi universidad es tan grande como el universo mismo. Me duele verla pisoteada por todos lados, tanto por el gobierno como por los opositores de igual manera.

Y hasta acá dejo este post. Más que todo un desahogo ante esta absurda situación que nos está tocando revivir. Quiero salir de este gobierno, pero rezo por que los que vengan no tengan nada que ver con guarimberos y provocadores, pues seguiremos en las mismas mas con otro color en el poder. Espero que pronto reaccionemos y demos un giro total en la dirección de estas protestas.

¡Menos violencia, más acciones!
¡Menos destrucción y más trabajo!
¡Menos odio y más empatía!

Hasta una próxima entrada...

sábado, 8 de marzo de 2014

Día de la mujer

¡Hoy, 8 de Marzo, es el día Internacional de la Mujer! Aprovecho para mandar un saludo y un abrazo grande a todas las mujeres del mundo (en especial las que lean esto, jajaja). Y a pesar de que me parece bonito tener un día para celebrarlas, debo confesar que hay algunas cosas que vale la pena discutir.

¡Vivan las mujeres!

Hoy quería compartir con ustedes algunos pensamientos sobre el tema.

  • En primer lugar y más importante, sinceramente siento que no debería existir tal cosa como un día para celebrar a las mujeres, pues para eso está cada instante de nuestras vidas. Son el regalo más grande que Dios le pudo haber dado al universo. Le traen color y alegría a un mundo que sería totalmente gris sin ellas, su ternura, su risa, todo. ¡Gracias por existir y darles un verdadero significado a nuestras vidas! :)
  • Creo que tener un día de la mujer puede ser más bien malinterpretado de forma sexista. Sé que se supone la celebración es de la igualdad de géneros, pero entonces el nombre es confuso. ¿Por qué habría que hacer un celebración de igualdad, pero sólo para las mujeres? Si lo que se celebra es la igualdad de género, entonces no tiene mucho sentido, creo yo.
  • El género es una característica más que puede tener una persona. Entiendo que felicitemos a nuestras madres y padres en su día, pues lo que celebramos es su esfuerzo al criarnos. Pero felicitar a una persona por haber nacido en uno u otro género es extraño. Claro, la idea es felicitarlas a todas por la herencia que tienen de haber salido de su rol servil y secundario de las sociedades predominantemente machistas del pasado. Pero eso es como si buscáramos a nuestro amigo de piel más oscura y felicitarlo por no ser un esclavo. Son eventos históricos importantes, pero pertenecen sólo a la historia.
Y este corto post era lo que quería compartir por hoy. Valoren y quieran a todas las mujeres con las que tengan la suerte de compartir aunque sea un momento. Recibes mucho más de lo que entregas siempre, pues el cariño que son capaces de mostrar no tiene límites. Hasta una próxima entrada. :)

miércoles, 5 de marzo de 2014

Dragon Ball Z: Como Kaiosama manda

Si, así es... Este es un post sobre el animé que marcó la infancia de muchos de nosotros: Dragon Ball. En particular, de mi saga favorita: Dragon Ball Z. Sé que soy un niñito, pero también sé que no soy el único, jajaja. Esta serie tiene un poder místico y es que no importa lo viejo que uno esté o la cantidad de veces que uno haya visto la serie, si la pasan en la televisión uno es feliz viéndola nuevamente. :D

Dragon Ball Z Rocks!!!

Últimamente, en Cartoon Network han estado pasando Dragon Ball Z Kai, a partir de las 10:30pm. más o menos. ¡Es genial! Es una buena forma de relajarse para terminar el día. El único problema... Es que es Dragon Ball Z Kai, no su versión original. Igual se puede disfrutar, pero resumen la serie demasiado. Y más aún, censuran escenas que realmente no lo necesitan. Hay capítulos completos que, si bien son relleno, le daban parte de la magia a la serie. Sin embargo, el colmo de todo fue ayer: Ya están en el planeta Namek y acaban de llegar las fuerzas especiales Ginyu. ¡Finalmente! Esa parte es divertida. Además del mega resumen que daña la trama, cuando Vegeta derrota a Gurdo no muestran como realmente le corta la cabeza, ni la conversación que tiene luego con la cabeza del pana en el piso. El que no haya visto la serie original antes no pude tener la más mínima idea de que ocurrió ahí. Lamentable, lamentable...

Entonces decidí que era momento de complacer la nostalgia como es debido y buscar los capítulos de Dragon Ball Z en su formato original. ¡Y los encontré! Hoy vi el primer capítulo y es 10.000 veces mejor y más interesante que el primer capítulo del Kai, jajaja.

Aquí está el enlace a donde los conseguí:
(también están disponibles las otras sagas, películas, OVAs, etc.)

Eso si, el formato original de Dragon Ball Z es laaaaaargo. Tiene 291 capítulos (pero realmente no tengo prisa). Posiblemente vea uno, o a lo suma un par al día en algún momento de relax. Sin embargo me hace feliz haber encontrado donde verlos. Solamente el primer capítulo y ya la nostalgia la tengo a mil (algo que realmente no logra el Kai, a pesar de que sigue siendo bastante bueno). Hasta la calidad un poco menos pulida de los dibujos le da un toque especial. :)

Y bueno, esto era lo que quería compartir por ahora. Sigan siempre en contacto con el niño que fueron, de esa forma su imaginación nunca tendrá límites. ¡Hasta una próxima entrada! :D

sábado, 1 de marzo de 2014

AI Planning for Program Synthesis

Nota: Este post está en inglés, ya que es mi intención compartirlo en un curso sobre Planificación que estuve realizando, como parte de su evaluación.

Since January 13th, I had the opportunity to refresh and deepen my knowledge of Artificial Intelligence Planning, with an awesome course from The University of Edinburgh, through Coursera, by professors Austin Tate and Gerhard Wickler.

Edinburgh's: Artificial Intelligence Planning
Austin Tate and Gerhard Wickler
Coursera

It is now coming to an end, haven proved to be a challenging and fun experience. I particularly enjoyed implementing my own graphplan planner, albeit without mutex verifications. Other programming assignments were actually quite easy if one used Prolog, but none the less very fun!

One of the assignments (the Creative Challenge) was to come up with some application that benefits from planning techniques, or o particular technology for planning. I decided to take the first option and attempt to make a link between planning and my own work. I am currently working on formal semantics and program verification techniques.

A plan can be viewed as a sequence (or possibly a directed acyclic graph) of steps that takes an environment in a given initial state and transforms it in a way that it ends in a given final state. A program is actually a very similar concept. A program, particularly in imperative languages, is a series of steps needed to take a given input and produce a desired output. This input and output can be expressed in terms of conditions that express what things are true at the start and end of a program respectively. This precondition and postcondition together form the specification or contract for the program.

What if you only had the contract but not the program that implements it? A POP planner could be used to take the contract and expand it into several, more simple, tasks. A plan in which all steps are known to have a direct implementation would be the desired program (one that actually implements the proposed contract). A possible way of expanding tasks into simpler subtasks could be through Morgan & Vicker's refinement calculus. This planner would actually be like an automatization of the refinement process they proposed.

And maybe we could think of a crossover in the other direction. Some planning problems, as well as programs, are limited by resources. These resources might be spatial, temporal, for energy, etc. The logic of bunched implications of O'Hearn and Pym presents a framework for specifying resource dependant reasoning. Particularly, Reynold's separation logic allows reasoning with limited resources and exclusive ownership (mainly memory, but other applications are possible). This kind of reasoning could be exported to planners in order to treat with their own resource constraints. Separation logic has a very nice frame axiom that allows local reasoning, and fits perfectly with the analogous notion of a frame in knowledge representation. I have not found any reference for such a crossover, but I think it could definitely be investigated further.

And this was my small contribution and submission to the creative challenge. Thank you very much for reading! Hope you liked it. :)

viernes, 28 de febrero de 2014

Udemy: ¡El descubrimiento del año!

Sé que apenas estamos en Febrero, pero estoy seguro de que esta página será el descubrimiento más grande de este año. ¡Les presento: Udemy!

Udemy Rocks!

¿De que se trata esto? Es una página de e-learning al estilo de Coursera, Khan Academy o Udacity, pero con un twist particular. El foco de la página es que los cursos sean enseñados por expertos del mundo, aún cuando no tengan una afiliación académica con alguna universidad importante. ¡Cualquiera puede crear un curso, sobre lo que sea que considere interesante!

El modelo de negocios de la página es super interesante. Cualquiera puede crear cursos y ofrecerlos, tanto de forma gratuita como paga (y la paga es en $). Lo más importante e interesante: ¡Cada quien es dueño total de su curso y sus recursos!

Esta iniciativa es una excelente oportunidad, en primer lugar para compartir con el mundo lo que sabemos y además de poder ver ingresos por enseñar lo que nos gusta. Les recomiendo mucho inscribirse y ver el "curso sobre como crear un curso", para que se enamoren igual que yo, jajaja.

Enlace: Udemy

Y bueno, eso les quería compartir por ahora. Debo agradecer a Luis Pulido por mostrarme esta página (estoy seguro que alguien me la comentó incluso antes, pero no recuerdo ahorita quien). Estoy pensando en crear un curso sobre programación funcional en Haskell, aunque acepto sugerencias (claro, después de que termine la tesis completamente). :)

¡Hasta una próxima entrada! :D

martes, 25 de febrero de 2014

Una propuesta diferente

Han sido un par de semanas difíciles para Venezuela, que se suman a años que tampoco han sido nada fáciles. Sin embargo, la explosión social que está viviendo el país es de una escala increíble y con una fuerza poco vista antes. Sin embargo, no está de más preguntarse: ¿Toda esta energía, realmente está bien enfocada?

¿Habrá otro camino?

Han sido días de marchas, de protestas y últimamente de guarimbas y barricadas. Lo que empezó con la consigna de paz por delante es ahora una declaración no oficial de guerra contra el gobierno. Y es entendible, pues una gran parte de la población Venezolana está harta de vivir con miedo y esperar el cambio. Por supuesto, no todos estamos de acuerdo con esta nueva ola más violenta y radical de protesta, a pesar de que entendemos sus razones. Y el par de reclamos más comunes hacia nosotros son:
  1. "No te veo haciendo nada para estar criticando a los que al menos hacen algo por ti."
  2. "Si no te gusta la propuesta, pues entonces plantea una solución tu."
Con respecto a estos dos reclamos, tengo un par de contrargumentos. Para el primero, hacer por hacer no es necesariamente la mejor actitud. Este argumento puede ser llevado al extremo. ¿Realmente todo lo que se hace es justificado por que es una acción? Me reservo los ejemplos, pues de todas formas están sujetos a opiniones de cada quien. Pero creo que lamentablemente, la historia ha sido consistente en considerar héroes a los que más actúan y no a los que más razonan. Hace menos de 100 años de las guerras mundiales. Hace casi 2500 de la formalización del pensamiento lógico. Creo que esta relación temporal no tiene sentido, si no es por otra cosa que la naturaleza ambiciosa y vengativa que ha tenido la mayoría de la humanidad a través de su historia.

Con respecto al segundo argumento, siempre he ofrecido la misma respuesta: No hace falta tener la solución, para saber que una propuesta está mal. Por poner un ejemplo en un entorno científico. Existen 7 problemas matemáticos llamados "problemas del milenio", los cuales se consideran entre los más importantes y difíciles problemas no resueltos de las ciencias. Cada año, cientos de propuestas llegan para intentar resolver estos problemas y cada año la gran mayoría son rechazadas. Las rechazan pues los jurados consiguen errores en sus planteamientos. Esto no quiere decir que los jurados sepan la solución a estos problemas (o ellos mismos intentarían publicarlos). Pero si pueden saber que una propuesta no cumple con lo necesario para ser una solución válida.

Sin embargo, en esta ocasión si les compartiré una propuesta diferente. Es una propuesta que he hecho otras veces y con las que me han visto con mala cara en cada ocasión. Sin embargo, la propuesta se ha aplicado ya en el pasado y ha dado excelentes resultados.

Mi Propuesta:

En las redes sociales he visto compartida una comunicación "clandestina" que llama a todos los opositores a hacerle un boicot al gobierno. Esto es, no comprarles nada a ellos, no trabajar para ellos y si no queda más remedio, hacer el trabajo mal de forma intencional. Esto me parece lo más contraproducente posible para nuestro desarrollo como país.

Mi propuesta es todo lo contrario a esta última. En vez de concentrarnos en tumbar a un gobierno, concentrémonos en hacer nuestros trabajo de la mejor manera que podamos. Intentemos más bien buscar trabajo que involucre al gobierno y esforcémonos al doble para que salga bien. Eventualmente, el gobierno y su propaganda perderán todo poder real pues las riendas del país la llevaran aquellos que se empeñaron en construirlo a pesar de todo.

Esta propuesta tiene, como todo, algunas fallas y dificultades:
  1. El gobierno no aceptará fácilmente colaboración de organismos abiertamente opositores. Esto tanto por motivos históricos (justificados, como el sabotaje de PDVsa) como por motivos de orgullo (completamente injustificados).
  2. La oposición no está en un momento en el que pueda simplemente dejar todo y aplicar una solución tan diferente. Estamos en una situación donde los ánimos están tan caldeados en ambos bandos que es imposible hablar de trabajo y mucho menos en equipo.
  3. Ésta es la más importante: ¡Los Venezolanos somos sumamente orgullosos! Todos amamos a nuestro país, tanto los que apoyan al gobierno como los que no. Pero en nuestra naturaleza está la competencia, la viveza y el orgullo. No aceptaremos que el país prospere bajo la bandera de a quien consideramos nuestro enemigo y honestamente, así pasaría. Si todos trabajamos juntos para sacar a Venezuela a flote, el crédito se lo llevará por completo el gobierno. Mi pregunta entonces es: ¿Realmente importa? Pueden hacer toda la propaganda roja-rojita que quieran, pero habremos construido nosotros mismos el país que queremos para nosotros.
Si, es una propuesta inocente quizá, pero de aplicarse y funcionar tendríamos el país que quisiéramos. Nosotros mismos seremos el verdadero gobierno y los diseñadores de nuestro propio entorno. Y soluciones así han sido aplicadas ya a pequeña escala. En la USB hay un profesor que es posiblemente una de las personas a las que más admiro y respeto que haya conocido. Este profesor es 100% opositor y sin embargo tuvo cargos ministeriales en el gobierno del ex-presidente Chavez y actualmente dirige proyectos tecnológicos de escala nacional. En la universidad lo ven como traidor por trabajar con el gobierno. En el gobierno lo tratan de infiltrado por ser de la universidad. Está en una posición que no es nada fácil, pero ha podido hacer muchas cosas buenas por Venezuela, ignorando su orgullo y haciendo el mejor trabajo que puede.

Como metáfora o más bien un símil de mi propuesta les propongo el siguiente escenario:

Imagínense que Venezuela es un puente y sobre el estamos todos parados. El gobierno está sobre un tanque pesado el cual está debilitando terriblemente el puente y todos estamos seguros de que pronto colapsará. En este momento tenemos una decisión que tomar:
  1. Comenzamos con taladros a perforar el puente cerca del tanque, esperando que el puente se caiga solamente en ese punto. Luego reconstruimos el puente con los que quedemos y lloraremos a los que nos dejaron en el proceso.
  2. Dejamos al gobierno creer que mandan en su tanque y nos colamos debajo del puente. Aquí comenzamos a construir un nuevo puente justo por debajo, con vigas muchos más fuertes y resistentes. Con pilares enormes para sostenerlo si hiciera falta. A todas estas, el puente anterior se sigue debilitando, pero no podrá colapsarse, porque un nuevo puente ha sido construido por quienes lo aman, para darle soporte. El gobierno en su tanque proclamará el haber tenido razón y que el puente no se estaba cayendo. Nosotros sabremos la realidad y lo mejor es que no importará, por que nuestro nuevo puente nos soporta a todos.
Es una propuesta que demanda de nosotros un sacrificio, pero no el sacrificio con nuestras vidas. Nos demanda el sacrificio de tragarnos nuestro orgullo y trabajar por el país, no por su gobierno. Yo soy también profesor de la USB e intento hacer mi trabajo de la mejor manera posible, a pesar de que me queda mucho por aprender y mejorar. Y realmente creo que este es el camino que nos llevaría al país que queremos.

Un último símil para terminar y se trata de la batalla entre filosofías de software. Con un software como Windows puedes o no estar de acuerdo con como hace las cosas, pero eso es lo que hay finalmente. La única manera de realizar cambios sería convenciendo o reemplazando al director del proyecto (esto es lo que estamos aplicando ahorita en el país). Con un software como Debian (una distribución de Linux), si algo no te parece tienes la total libertad de ir y arreglarlo. Otras distribuciones de Linux, como Ubuntu, se han apartado un poco de este camino, pero aún es aplicable en muchos otros. Construye el sistema que quieras para ti. Es difícil, pero posible (esto es lo que propongo).

Y bueno, otro post más sobre política en un blog cuya intención no era esa, jeje. Espero sus comentarios para saber que opinan al respecto. Yo siento que he aplicado esta estrategia lo mejor que puedo y conozco a otros que lo han hecho de forma similar. Creo que si todos adoptáramos esta actitud (que no es pasiva sino más bien aún más activa), podríamos salir adelante. Hasta una próxima entrada y manténganse seguros por sobre todo. Recuerden que quizá no haya gloria en huir de una pelea, pero no le servimos a nuestro país heridos o hasta muertos. ¡Hasta la próxima! :)