El blog de Morgul

El blog personal de Morgul, donde escribe sobre sus aficiones, descubrimientos y actividades, compartiendo conocimientos.

1 de febrero de 2012

The Humble Bundle

English version below.

Me encanta esto: tres videojuegos de calidad (Anomaly, EDGE y Osmos), pagas por ellos lo que quieras, y tendrás disponibles las versiones de ellos para todas las plataformas: Android, Linux, Mac OS X y Windows. Si pagas más de la media de lo que se ha pagado hasta el momento, tendrás un juego más (World of Goo, este me encanta especialmente)... así incentivan a la que la gente se moje un poco más. Además, podemos elegir a quién exactamente va a parar el dinero que decidamos pagar, incluyendo dos organizaciones caritativas, y cúanto queremos dar a cada parte implicada. Ya lleván más de medio millón de dólares en ventas de esta manera... y eso sólo en esta temporada, lo han hecho varias veces ya ;D

http://www.humblebundle.com

I love this: three quality video games (Anomaly, EDGE y Osmos), you pay whatever you want for them, and you'll have the versions of those games for all platforms: Android, Linux, Mac OS X and Windows. If you pay more than the currently average purchase price, you'll have one extra game (Word of Goo, this one I specially love)... that way they gently push people to pay some more. Moreover, we can choose who exactly will receive the money we choose to pay, including two Charities, and how much we want to give to each implied part. They have already made more than half a million dollars in sales this way... and that's only this season, they've done it several times already ;D

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

21 de enero de 2012

Good bye, Megaupload

Good bye, Megaupload, I wish someday you can come back with my back up files there, but thankfully data is not what I am... so I'll always be fine without any of that. Oh, and I won't miss at all your twin site MegaPorn, haha :P

Kim Schmitz, Mathias Ortmann, Finn Batato and Bram van der Kolk: thank you all. I wish the best to all of you, and I wish the sick "industry" can completely destroy themselves as they've been trying so hard to do.

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

13 de enero de 2012

Free coaching with Cory Skyy, in dreams

Hey guys. Receiving coaching in person with Cory Skyy is a truly priceless experience, that I highly recommend to anyone that wants to really be great with women. One of the advantages it has had for me, amongst other great ones, is that I've already had several free coaching sessions with Cory... in my dreams, hehehe.

Tonight I had one of those coaching sessions in a night dream. It was a group coaching one, and we were hanging out in a night club. An advantage for it happening in a dream is that, in dreams, subtle perceptions are super clear. Cory's energy was amazing: I could very vividly feel that he was a pristine chick magnet. He had all that really matters, and all of that openly exuding from him.

There were several lessons from him in the coaching session that I remember and still make sense in this reality:
  • We asked him about the times when we hit eye contact with a woman that we like, but it seems like there's no interest, she's for example just looking with a serious face... So, what do we do about it? His answer was simple, he just pointed out: "how it was when you found a great connection with a girl, did you had to do anything special to have it?"

    I immediately relived (another nice thing from dreams) one of those connections with a beautiful girl, where I was just checking the space around the room, and I automatically (without knowing why yet) stop my eyes on the girl, even she was looking partly away from me. A second later, she turns her head and looks directly at my eyes. And bam! We both know we're into each other, the connection is there and smiling more is inevitable :P Zero effort. That answers the question: no worries, it just happens, no need to go looking for it or doing anything special.
  • At some point in the club, someone asks Cory: "What if we go out some night but find no girl for us?". His answer was something like: "Don't go out with the purpose of meeting women, go out just to have a good time. If you have a good time that night, who cares if you meet any girl or not?". I think he told us also how it was for him if that happened to him, and from his energy, I knew he really didn't care at all, he was completely carefree about it.
  • The last interesting point to learn from, and the most bizarre one - but still can apply to this reality -, was when one of us mentioned that there was no comfortable space in the club to be with a girl, and the only interesting spot - long cushioned seating area attached to the wall - wasn't good enough for intimacy (the pictures of it I still have in my mind say otherwise, but he said that in the dream and it made sense). Cory showed him what he might do in there with her girl, actually doing it as he was saying it: lying down on his back completely, occupying what would be enough sitting space for at least four people... and he added that the girl would lay on him :D. That blew my mind, as it would certainly be out of my comfort zone, as I might be worried what other people in the club would think.
I realize now, that all of these lessons touched some of my sticking points, even ones I wasn't consciously aware of.

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

28 de febrero de 2010

Función print compatible con Python 2.X y 3.X

Una de las características introducidas por el sencillo y potente lenguaje de programación Python, en su versión 3.0, es la sustitución de la orden interna print por una función de igual nombre. Esto supone algunas ventajas, pero también la desventaja de romper la portabilidad hacia atrás del código que haga uso de la orden print.

Como tengo varios proyectos de desarrollo en Python, como el motor de MUD de MUnDoCAAD (MUnDoCAAD MUD Engine, véase la entrada "MUnDoCAAD MUD Engine: pasado y presente") y mi intérprete de aventuras tipo-PAWS (véase la entrada "Mi intérprete de aventuras DAAD"), me interesa permitir que este código funcione tanto en versiones de Python 2.X como en las 3.X.

Es por ello que he desarrollado recientemente una solución, un conjunto de módulos Python, que permite tener la misma funcionalidad con independencia de la versión de Python de la que se disponga. Compartiré este código aquí, en mi blog, para quien le pueda servir.

El módulo principal de la solución se llama prn_func, recomiendo su uso con una orden como: from prn_func import prn, y después sustituir todos los usos de print por prn, usando esta función del mismo modo que la nueva función print de Python 3. Su código (a guardar como prn_func.py) es el siguiente:
# Función sustituta de print, compatible con Python 2.X y 3.X

from sys import version_info

if version_info[0] < 3:
  # La versión de Python es 2.X
  if version_info[1] < 6:
    # La versión de Python es menor que la 2.6
    try:
      from prn_2 import prn
    except SyntaxError:
      pass
  else
:
    # La versión de Python es mayor que la 2.5
    try:
      from prn_26 import prn
    except SyntaxError:
      pass
else
:
  # La versión de Python es 3.X
  try:
    from prn_3 import prn
  except SyntaxError:
    pass

Los otros módulos (prn_2, prn_26 y prn_3) son auxiliares a este. Cada uno de ellos ofrece el soporte de la función de impresión para un conjunto de versiones específico de Python.

El módulo prn_2 ofrece el soporte de la función de impresión para versiones de Python menores que la 2.6. Su código (a guardar como prn_2.py) es el siguiente:
# Exporta la función sustituta de print, en versiones de Python 2.X

from sys import stdout

def prn (*args, **keywords):
  textos = []
  for arg in args:
    textos.append (str (arg))
  fichero = keywords.get ('file', stdout)
  fichero.write (keywords.get ('sep', ' ').join (textos))
  fichero.write (keywords.get ('end', '\n'))

El módulo prn_26 ofrece el soporte de la función de impresión para versiones de Python 2.X mayores o iguales que la 2.6. Su código (a guardar como prn_26.py) es el siguiente:
# Exporta la función sustituta de print, en versiones de Python 2.6.X

from __future__ import print_function

prn = print

El módulo prn_3 ofrece el soporte de la función de impresión para versiones de Python 3.X. Su código (a guardar como prn_3.py) es el siguiente:
# Exporta la función sustituta de print, en versiones de Python 3.X

prn = print

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar

1 de febrero de 2010

Mi intérprete de aventuras DAAD

Últimamente, he estado desarrollando un intérprete tipo PAW con el lenguaje de programación Python, lenguaje que además de ser muy potente, permite programar aplicaciones de cualquier complejidad en muy poco tiempo (este proyecto es una buena prueba de esta afirmación).

Mi intención es hacer este intérprete genérico, de modo que pueda extenderse fácilmente para soportar cualquier sistema tipo PAW existente, añadiendo en módulos aparte los condactos adicionales (los de The PAWS estándar ya los implementará mi intérprete) y funciones para cargar o importar las bases de datos. Y también extensible en cuanto a poder incorporarlo en un sistema de creación integrado, partiendo convenientemente en módulos para aprovechar el código de buen modo, sin necesidad de duplicarlo.

Como ya había avanzado bastante en la comprensión y aprovechamiento de las bases de datos de algunas de las primeras versiones del parser DAAD, me aventuré a probar y adaptar mi intérprete para aventuras con este sistema (sobre todo, el 'Jabato'), sin perder de vista el aspecto de facilitar la compatibilidad hacia atrás (The Quill, The PAWS, SWAN) y hacia adelante (otros sistemas tipo PAW posteriores, como NMP, SINTAC, SKC, etc.). Esto me ha permitido avanzar aún más en mi descubrimiento arqueológico de los recovecos de DAAD (y sus precursores).

Ayer mismo, me puse tan contento cuando vi que lo que tenía hecho funcionaba tan bien, y de modo tan parecido ya al mismo intérprete DAAD original de el 'Jabato' (ejecutando esta aventura), que grabé un vídeo para compartir con vosotros, y que podáis ver que esto es más que puro vaporware:



En el vídeo (sobre todo en la versión con mayor calidad, la del enlace de descarga que indico en YouTube), si se presta suficiente atención, se aprecian algunos defectos. Unos cuantos de estos los he corregido ya hoy, como:
  • Mayor velocidad de ejecución. Mi intérprete, cuando tenía la traza de banderas activada (el mostrar cómo van cambiando estas), iba bastante lento. Esto me hizo tener que enlentecer enormemente la emulación de DOSBox, para poder comparar de modo visualmente más fácil la ejecución de ambos intérpretes a la vez. Lo he solucionado haciendo que sólo se redibujen las banderas que cambien de valor o color. En comparación, ahora vuela... deshabilitando la acción de espera de los condactos PAUSE y ANYKEY, la ejecución de lo que en el vídeo dura más de un minuto, ahora tarda unos cuatro segundos, permaneciendo totalmente funcional la traza de condactos por consola y de banderas en la ventana.
  • En los créditos, cuando aparece el texto "PRESENTAN" bajo la cara de Jabato, en la versión original Jabato guiña un ojo, mientras que en mi intérprete parpadea (cierra ambos ojos). Una misma versión, con distinto efecto, del mismo problema es cuando la cara de Jabato sube a la parte superior derecha de la pantalla, una vez descrita la localidad inicial. El problema era que mi intérprete dibujaba imágenes siempre completas, sin respetar los límites de dibujado que indicaba el código de la aventura. Ahora ya respeta estos límites invisibles.
  • Otro problemilla menor (en el vídeo) era que, al borrar partes de la pantalla, a veces se borraban también zonas de la sección de impresión del estado de las banderas de mi intérprete. Esto era un problema pequeño, hasta la corrección del problema del primer punto, que lo convertía en un problema grande. Pero la solución ha sido más rápida que la de los puntos anteriores, si bien similar a la del segundo.
Eso es todo, por ahora. Aprovecho para pediros que no dudéis en compartir conmigo cualquier información técnica que tengáis de DAAD o de su precursor inmediato SWAN. Sobre todo, me encantaría conseguir la documentación de DAAD que venía con las copias del parser que se entregaron a los siete ganadores del concurso de Aventuras AD-Microhobby.

¿Te ha gustado esta entrada? Vótala en Bitacoras.com: Votar