Creando nuestros propios juegos para Nintendo DS

El día de ayer los usuarios de la consola Nintendo DS, recibieron la gran noticia de que la compañía japonesa anunció el Nintento DSi LL, que es una versión con pantallas de 4.2 pulgadas, del actual DSi. La razón de esta pantalla de mayor tamaño según los medios especializados es satisfacer al público de mayor edad que prefiere pantallas con mejor visibilidad y la otra es permitir que el dispositivo pueda ser usado como un mejor dispositivo multimedia para ver videos en él.

Para mi fue primera noticia que es posible poner videos arbitrariamente en las consolas Nintendo DS, pero googleando encontré que existe un software llamado MoonShell, que permite reproducir archivos de música MP3, ver videos en formato DPG, además de poder mostrar imágenes en formatos JPG//BMP/PNG en adición a poder visualizar archivos de texto plano. Es decir con dicho software un Nintendo DS puede convertirce en un reproductor multimedia completo que muchos de los actuales poseedores de MP4/MP5 envidiarían.

Como era de esperar mi curiosidad me llevó a investigar los detalles de como era posible instalar dicho software y sobre todo poner los videos en las consolas de Nintendo, así que continue siguiendo links hasta que encontré Revolution for DS (R4DS), una tarjeta adaptadora tipo SLOT-1 (el conector de la parte trasera de la consola) que permite utilizar cualquier memoria microSD para grabar en ella juegos comerciales, juegos hechos por uno mismo (homebrew) y contenido multimedia que puede ser reproducido a través del software MoonShell.

Por el título del presente post se daran cuenta que lo que más me intereso fue la parte de los homebrew, o la posibilidad de instalar juegos o programas desarrollados por uno mismo. Si consideramos que el hardware del DSLite por ejemplo tiene 2 CPU (ARM9 + ARM7), 4MB de meoria RAM y cuenta con WiFi es una plataforma ideal para desarrollar herramientas de monitoreo de redes wireless, además de que puede utilizarce tambien como telefono voip, ya que cuenta con micrófono y parlantes. Claro si es que alguien desarrolla un cliente skype para las consolas de Nintendo.

El tutorial que nos explica como instalar el SDK (devkitARM) para desarrollar aplicaciones para el Nintendo DS, DS Lite, DSi y DSi LL, así como la instalación del emulador (DeSmuME) que nos permite probar nuestras aplicaciones antes de ponerlas en el R4DS, puede ser leído en la sección de Tutoriales y howtos del blog bajo el título "Instalar SDK para Nintendo DS en Linux".

La razón de que el tutorial sea sólo para Linux (o para cualquier otro Unix como el OSX), es que en el caso de los usuarios Windows, ellos sólo deben descargar el programa devkitPro, ejecutarlo y listo. Todo se instala automáticamente. Quiero aclarar que no es que odie Windows o piense que es una plataforma inferior, sencillamente me siento más cómo en entornos Linux/Unix.

Convierte tu Ubuntu en un OSX Leopard

Aunque no soy un Apple fan, debo aceptar que el escritorio de la Mac es bastante atractivo visualmente. Y aunque nunca instalaría OSX en mi PC, en el site MakeTechEasier, encontré la forma como poder tener el mismo look-and-feel del escritorio OSX en mi Ubuntu. Afortunadamente el tutorial utiliza Hardy, que es la distribución que uso, por regla general sólo utilizo LTS (Long Term Support).

Algunos problemitas que encontré siguiendo el tutorial fueron estos:

1. Cuando se instale el Avant Windows Navigator (el dock emulado del OSX), ejecutar este comando:

sudo apt-get install avant-window-navigator-trunk awn-manager-trunk

Las extensiones ya no están soportadas.

2. El dock bar no arraca por defecto así que siempre hay que lanzarlo a mano, para ello hay que presionar Alt-F2, con lo que aparecerá una ventanita que nos permite lanzar aplicaciones, alli tipearemos avant-windows-navigator, como se muestra en este gráfico:

avant-windows-navigator

 
Aunque algunos comentarios en el site de MakeTechEasier, critican esto de ser un plagio, o que los que lo hacen son "wannabe", pues en realidad no es cierto. Un "wannabe" es el que corre un hackintosh. Es decir usa el OSX pero una plataforma para la cual no esta diseñado y por lo tanto inevitablemente tendrá problemas de estabilidad. En este caso en particular, sigue siendo 100% Ubuntu, lo único que le hemos cambiado es el theme, pero nuestro familiar entorno sigue estando alli. Otra ventaja adicional es que puede corre sobre cualquier hardware, cosa que un hackintosh no permite.

Es divertido, al menos he hecho un par de bromas aquí en la oficina haciendoles creer que me he pasado a OSX. No se si conservaré este theme o vuelva al clásico de Ubuntu, pero por lo pronto me parece entretenido y los fonts aparentemente tienen mejor acabado que los que utiliza por defecto Ubuntu, tal vez si retorno al clásico theme de Ubuntu me quede con los fonts actuales 😉

Karmic Koala incluirá Eucalyptus

Reamente suena un poco a broma, pero es realmente un avance radical en las posibilidades corporativas de la seguiente versión de Ubuntu 9.10 (Karmic Koala). Como los amantes del simpático marsupial australiano lo sabran, lo único que come un koala es eucalipto, es por ello que la inclusión de Eucalyptus (Elastic Utility Computing Architecture Linking Your Programs To Useful Systems), en la última versión de Ubuntu Server 9.10 resulte tan irónico.

Pero más alla de las coincidencias, según he leído en un artículo aparecido en InfoWorld, Amazon incluirá Ubuntu Server 9.10 dentro de su oferta de servidores EC2, sumado eso al hecho de que con Eucalyptus, la nueva version de Ubuntu (Karmic Koala) podrá usar la misma API que los servidores hosteados en la nube EC2, será posible desplegar indistintamente una aplicación web sobre servidores ubicados en la nube de Amazon o en una nube en el propio data center de la empresa, esta posibilidad de cloud computing hibrida, ciertamente ayudará a muchos sysadmin a convencer a sus gerentes de las ventajas de ir hacia la cloud computing en pasos incrementales y con una alta redundancia (es decir tener siempre un respaldo local en caso de que Amazon falle).

Aunque no es buena idea ser pionero, lo que si es interesante es comenzar a experimentar con esta tecnología ahora, para que cuando la siguiente version LTS (Long Term Support) de Ubuntu aparezca en abril del 2010, estemos listos para comenzar a mover carga real a una arquitectura de cloud computing híbrida.

Otra interesante innovación en cuanto a virtualización que introducirá Karmic Koala, es un mejor soporte en kernel para las tecnologías KVM y Xen, que si son acompañadas del hardware apropiado (procesadores con soporte para virtualización asistida por hardware), nos ofrecen la posibilidad de correr sistemas 100% virtualizados casi con la misma eficiencia de los sistemas paravirtualizados, con lo que podremos correr entornos Windows en nuestra nube casi con la misma eficacia de correr el entorno en un servidor dedicado.

Yo estaba analizando las posibilidades de una migración a XenServer de toda mi plataforma de servidores virtuales para estar un poco más estandarizado, pero dada esta nueva posibilidad seguire muy de cerca lo que esta haciendo Ubuntu y de ser cierto todo lo que promete para mediados del 2010 estaría iniciando una migración masiva a la plataforma Ubuntu-Eucalyptus, debido a que de esa forma sería extremadamente simple movernos a una tecnología 100% basada en la nube.

Administrando ethernet settings en Xen sobre Lenny

Desde que comencé a actualizar masivamente tanto mis servidores virtuales como los físicos a Lenny, algunas cosas comenzaron a comportarse de manera extraña, por ejemplo, el caso de bind9, que comentaba hace poco en otro post, que por defecto rechazaba resolver nombres de dominio recursivamente cuando la solicitud venía de un host diferente. Adicionalmente comenzaron a aparecer otros extraños problemitas que no tenía antes, uno de ellos es que la tarjeta de red no negociaba bien la velocidad a pesar de estar configurada en "auto-negotiation".

En fin nada es perfecto, así que decidí echarle una mirara a la configuración de mi tarjeta de red usando el comando: ethtool eth0

Pero lo único que obtenía era esto:

localhost:/# ethtool eth0
Settings for eth0:
    Link detected: yes

Busque en Google, pero al parecer nadie tenía mi problema recientemente, la única refencia que encontré era de hace más de un año, junio 2008. Y el problema era debido a dependencias, como estaba seguro que ese no era mi problema, porque yo había instalado directamente desde los repositorios oficiales, entonces el error estaba en el uso del comando.

Pero si Uds. estan usando Xen, se habran dado cuenta de que adicionalmente a las interfaces físicas eth0, el instalador crea un bridge donde conecta todas las interfases virtuales de los DomU que esten ejecutandose. Esa intefase se llama "peth0" y usandola pude leer el seteo de los parámetros ethernet de mi tarjeta de red:

localhost:/# ethtool peth0
Settings for peth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Half
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000001 (1)
    Link detected: yes

A pesar de que mi switch estaba seteado a 100-full, y tenía la "auto-negociación" habilitada en mi server, por alguna razón esta no parecía trabajar bien. Así que probe cambiar la configuración de mi tarjeta de red manualmente a 100-full, para ello utilicé el comando:

localhost:/# ethtool -s peth0 speed 100 duplex full

Luego verifiqué si los cambios se había aplicado y estos no funcionaban, otra vez tenía 100-half. Entonces opté por la solución de deshabilitar la auto-negociación en mi server tambien, pues había fijado 100-full en mi switch. Para ello utilicé los comando:

localhost:/# ethtool -s eth0 autoneg off && ethtool -s peth0 speed 100 duplex full

Luego de eso, ya podía ver que mi server se había conectado a 100-full, lo cual indicaba claramente que la auto-negociación habilitada en mi server impedía que la interfase sincronizara con el switch correctamente. Luego de eso los problemas de latencia con las conexiones desaparecieron. Lo que me intriga es por qué no tenía ese problema cuando usaba Etch.

Traiciones en el Free Software

En el último Software Freedom Day realizado en Boston, el pasado 19 de setiembre, Richard Stallman declaró que Miguel de Icaza era un "traidor" a la causa del Free Software (detalles aquí), las declaraciones de Stallman posiblemente se deban al actual rumor de que Miguel de Icaza podría pasar a dirigir el laboratorio Open Source de Microsoft, en reemplazo del actual Senior Director Sam Ramji que dejará Microsoft a final de mes. Obviamente la comunidad Free Software de modo monocorde ha aceptado las palabras de Stallman como las de su profeta infalible. Pero lo cierto es que mientras el movimiento Free Software se reduce y debilita cada vez más, el Open Source se expande y se vuelte el actual paradigma para el desarrollo de software del futuro, a un punto tal de que empresas que viven de la venta de su código propietario han tenido que liberar el código de sus productos o al menos parte del mismo, hemos llegado hasta el punto impensable pocos años atras de que Microsoft se una al movimiento Open Source y aporte al desarrollo del kernel Linux.

Es más hay estudios cuantitativos que demuestran que la calidad del Open Source se ha incrementado en los últimos tres años, según un artículo recientemente aparecido en PC-World, esta tal vez sea la primera prueba cuantitativa de que el modelo Bazar es mucho mejor que el modelo de Catedral, que Raimond explicara en términos cualitativos en "La catedral y el bazar" .Si sumamos lo anterior al hecho de que empresas líderes del sector TIC como IBM, Oracle o Novell apuesten fuertemente por el Open Source es una señal de que es el camino del futuro.

En una declaraciones hechas por Linus Torvalds hace un par de dias decía que Linux se estaba volviendo muy sobrecargado, un hecho que es innegable si vemos la evolución del tamaño del código fuente del kernel, el tamaño del código practicamente se ha multiplicado por dos desde la version 2.4 a la 2.6. Esto es el resultado del diseño inicial del kernel, Torvalds optó por un kernel monolítico, lo cual permitió el desarrollo rápido del kernel, si lo comparamos con Hurd la solución perfecta de la FSF basada en un diseño de Microkernel que aún sigue en desarrollo perpétuo. Linus no intenta ocultar el problema, desviar la atención o buscar culpables en otro lugar, por el contrario lo enfrenta y analiza, es decir hace todo lo contrario a lo que hacen los devotos del FSF. Torvalds es conciente de la necesidad de hacer concesiones para hacer que algo funcione en la práctica, al parecer ese tipo pragmatismo es la principal diferencia entre Open Source y Free Software.

Es debido a ese fundamentalismo (a ver quien le puede decir a Stallman "emacs sucks" y sobrevivir a su ira), a ese radicalismo en ideas que han quedado demostradas imposibles de realizar en la práctica que cada vez el Free Software se reduce y es más una excentricidad que un elemento propulsor del desarrollo de la siguiente generación de software. Es por ello que Stallman ve traidores en todas partes, y considera enemigos a todos.