Super Vampire Ninja sobre Linux

Hace algún tiempo se publicaba en la lista de correo del Ceibal Jam un link a un juego denominado “Super Vampire Ninja Zero”, el cual se encuentra disponible para las plataformas Windows y XO. En este post veremos como podemos tomar la versión de XO, desempaquetarla y utilizarla como una aplicación Linux.

Primero que nada, debe descargarse la versión para XO de Super Vampire Ninja Zero, la cual se encuentra disponible aquí: http://www.supervampireninja.com/

Una vez que disponemos del archivo .xo, es muy sencillo extraer la aplicación Linux contenida dentro de él. Para esto debemos extraer los contenidos del paquete. Un archivo .xo es básicamente un zip, por lo cual cualquier utilitario debería ser suficiente. En nuestro caso, utilizaremos el comando unzip.

Abrimos una terminal, nos dirigimos al directorio donde se encuentra el archivo .xo e ingresamos el siguiente comando:

unzip svnz-01.xo

Se creará el directorio “SuperVampireNinjaZero.activity”. Para ejecutar el binario Linux, simplemente nos dirigimos a dicho directorio e iniciamos el ejecutable:

cd SuperVampireNinjaZero.activity
bin/SuperVampireNinjaZero

Es importante iniciar el binario estando ubicados en el directorio padre de bin, de lo contrario el juego no encontrará los archivos y cancelará con una excepción.

Con esto es suficiente. Si lo desean, pueden renombrar el directorio SuperVampireNinjaZero.activity a cualquier otra cosa que lo deseen (por ej. para remover el sufijo .activity) e incluso pueden crear un Launcher en el Escritorio Gnome o KDE. Enjoy 😉

Posted in Linux, Sugar, Video Juegos | 2 Comments

OpenCL vs. CUDA

A partir de la noticia de que ATI (AMD) ha extendido su implementación de OpenCL para poder paralelizar problemas sobre la GPU también (además de la CPU), me puse a leer sobre OpenCL, en particular sobre la implementación por parte de AMD del estándar.

Dada la similitud entre OpenCL y CUDA, creo que algo que resulta inevitable es comparar ambas tecnologías.


OpenCL Logo

Logo de OpenCL



En principio, OpenCL parece más “a pedal” que CUDA en varios aspectos, por ejemplo, el hecho de que uno debe crear el “contexto” de ejecución, cargar los fuentes de disco y compilar a mano los kernels de OpenCL, mientras que en CUDA uno puede optar por no hacerlo. En este sentido OpenCL es más parecido a GLSL (el lenguaje de Shading de OpenGL) que a CUDA, lo cual no me extraña, dado que tanto OpenCL como OpenGL son especificaciones a cargo del grupo Khronos.

Por otro lado, inmediatamente se puede determinar la ventaja de crear el contexto manualmente: uno puede determinar en tiempo de ejecución si las porciones en paralelo del programa deberían ejecutar sobre la CPU, la GPU o ambas al mismo tiempo. En este sentido OpenCL es superior a CUDA, dado que CUDA únicamente puede ejecutar sus Kernels sobre la GPU (al menos de momento).

También me gustaría realizar una comparación en en cuanto a portabilidad del código. Este es un punto algo engañoso. CUDA es una tecnología capaz de ejecutar únicamente sobre placas de video de NVIDIA, mientras que OpenCL es un estándar que cuenta con implementaciones para tanto GPU’s de ATI como CPU’s x86.

No obstante, el SDK de AMD para OpenCL se encuentra disponible tan solo para Windows (XP, Vista, 7) y algunos Linux (Ubuntu, SuSE), mientras que si uno quiere desarrollar sobre Mac, deberá utilizar la implementación de Apple del estándar. Esto podría traer problemas de portabilidad si ambas implementaciones difieren incluso en lo más mínimo.

Con CUDA, la implementación es única, asegurando siempre la consistencia dentro de una misma versión, pero restringiendo el programa a las plataformas para las que NVIDIA provea un SDK y a GPU’s NVIDIA.

En Algorithmia poseemos gran experiencia trabajando con CUDA, habiendo incluso realizado publicaciones sobre el tema, sin embargo consideramos OpenCL una muy buena herramienta para realizar los requerimientos por parte de nuestros clientes para los cuales CUDA no resulta una opción viable.

Posted in GPGPU, Programacion | Comments Off on OpenCL vs. CUDA

Apagar de Emergencia un Mac

Dejo este Post como un recordatorio sobre cómo apagar rápido un Mac en caso de emergencia. Al realizar un apagado (o reinicio) de emergencia se perderán los datos de todas las aplicaciones sin guardar sus documentos.

Para Resetear inmediatamente: Command + Ctrl + Power

Para Apagar inmediatamente: Presionar y mantener Power por un período prolongado (5 o más segundos).

Ref: conradchavez.com

Posted in Mac OS X, Tutoriales | 2 Comments

FTC abriendo la puerta a NVIDIA para fabricar chips x86

Como parte de la reciente demanda de la Federal Trade Commision (FTC) contra Intel por cargos de actitud anticompetitiva, la FTC estaría “sugiriendo” a Intel licenciar libremente la fabricación de procesadores x86 a otras empresas.

En la actualidad, para que una empresa pueda fabricar procesadores que utilizan el conjunto de instrucciones x86 debe primero adquirir una licencia de Intel. Esto estaría permitiendo a Intel regular injustamente el mercado sobre el cual compite, dado que ningún fabricante puede comenzar a producir procesadores x86 sin el previo consentimiento de Intel.

La regulación de la FTC podría abrir la puerta a que otros fabricantes comiencen a producir estos procesadores, abriendo así el mercado para que entren otros competidores. Entre los fabricantes que podrían estar interesados en obtener una licencia para la fabricación de procesadores x86 se encuentra NVIDIA, quien desde la adquicisión de ATI por AMD, se encuentra un poco por fuera de la tendencia del desarrollo de Hardware híbrido GPU/CPU.

De acuerdo con el artículo, desarrollar un chip x86 no es tarea trivial, requiriendo aproximadamente 4 años de investigación y desarrollo y hasta mil millones de dólares en inversión. Esto podría no ser un problema para NVIDIA, sin embargo, quien ha estado aumentando su inversión en I+D exponencialmente durante los últimos años y ya cuenta con aproximadamente 70 ex-empleados de Transmeta, otra empresa con licencia para fabricar procesadores x86.

Realmente será muy interesante ver cómo se desarrolla la demanda de la FTC contra Intel y ver si realmente se abrirá el mercado para que nuevos grandes competidores comiencen a entrar en la constante disputa AMD-Intel.

Vía New York Times.

Posted in Empresas, Hardware | Comments Off on FTC abriendo la puerta a NVIDIA para fabricar chips x86

Virtualización de OpenGL en VirtualBox

Cuando leí por primera vez que VirtualBox 3.0 agregaría soporte para OpenGL 2.0 quedé impactado. Me preguntaba cómo lograrían que las aplicaciones que ejecutaban en la máquina virtual pudieran acceder al Hardware de video disponible en el Host.

Resulta que la forma en que lograron esto es extremadamente elegante. Lo que hicieron fué programar un driver de video que implemente OpenGL 2.0 y delegue todos los comandos recibidos al “verdadero” OpenGL fuera de la VM. De momento existen tres drivers: uno para Windows, uno para Linux y uno para Solaris, por lo cual estos tres sistemas operativos pueden sacar provecho al Hardware de video al ser virtualizados.

En mi experiencia, tuve unos problemas habilitando el soporte para OpenGL. Resulta que por más que instalé VirtualBox 3.0, la máquina virtual que estaba utilizando había sido creada con una versión 2.x y tenía instalados los VirtualBoxAdditions viejos (versión 1.x). Para poder habilitar OpenGL tuve que desinstalar los Additions viejos en el SO virtual, reiniciar la VM, luego apagala y volver a iniciarla. Recién en ese punto se me permitió instalar los Additions nuevos (versión 3.x).

Dándole un poco de palo al OpenGL virtual, éste parece caminar bastante bien, más allá de que parece tener problemas de refresh (a veces la porción de la pantalla que es dibujada con OpenGL no se refresca) así como problemas de desperdicio de recursos (leaks), ya que en varias oportunidades descubrí que mi programa hacía uso de Shaders ya eliminados de la GPU.

Les dejo un listado de las características de la versión de OpenGL virtualizada. “Casualmente” las características reportadas son las mismas disponibles en el Hardware real. El listado está generado con una herramienta interna de Algorithmia:

OpenGL Version: 2.0 Chromium 1.9
Vendor: Humper

Available Extensions:
GL_ARB_depth_texture
GL_ARB_fragment_program
GL_ARB_multisample
GL_ARB_multitexture
GL_ARB_occlusion_query
GL_ARB_point_parameters
GL_ARB_point_sprite
GL_ARB_shadow
GL_ARB_texture_border_clamp
GL_ARB_texture_compression
GL_ARB_texture_cube_map
GL_ARB_texture_env_add
GL_ARB_texture_env_combine
GL_EXT_texture_env_combine
GL_ARB_texture_env_dot3
GL_EXT_texture_env_dot3
GL_ARB_texture_mirrored_repeat
GL_ARB_texture_non_power_of_two
GL_ARB_transpose_matrix
GL_ARB_vertex_buffer_object
GL_ARB_vertex_program
GL_ARB_window_pos
GL_EXT_blend_color
GL_EXT_blend_minmax
GL_EXT_blend_func_separate
GL_EXT_blend_subtract
GL_EXT_texture_env_add
GL_EXT_fog_coord
GL_EXT_multi_draw_arrays
GL_EXT_secondary_color
GL_EXT_shadow_funcs
GL_EXT_stencil_wrap
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_bias
GL_EXT_texture_object
GL_EXT_texture3D
GL_IBM_rasterpos_clip
GL_NV_fog_distance
GL_NV_fragment_program
GL_NV_register_combiners
GL_NV_register_combiners2
GL_NV_texgen_reflection
GL_NV_texture_rectangle
GL_NV_vertex_program
GL_NV_vertex_program1_1
GL_NV_vertex_program2
GL_SGIS_generate_mipmap
GL_CR_state_parameter
GL_CR_cursor_position
GL_CR_bounding_box
GL_CR_print_string
GL_CR_tilesort_info
GL_CR_synchronization
GL_CR_head_spu_name
GL_CR_performance_info
GL_CR_window_size
GL_CR_tile_info
GL_CR_saveframe
GL_CR_readback_barrier_size
GL_CR_server_id_sharing
GL_CR_server_matrix
GL_ARB_shading_language_100
GL_ARB_shader_objects
GL_ARB_vertex_shader
GL_ARB_fragment_shader

Shader Support: YES

Maximum Vertex Attributes: 16
Maximum Vertex Uniforms: 4.096
Maximum Fragment Uniforms: 2.048

Vertex Texture Units: 32
Fragment Texture Units: 32
Combined Texture Units: 32
Maximum Texture Coordinates: 8

Maximum Varying Floats: 60
Posted in Computación Gráfica, Sistemas Operativos, Tutoriales | Comments Off on Virtualización de OpenGL en VirtualBox

Bug en Fedora 12 un "Cortamambo"

Tras haber decidido recientemente actualizar el Sistema Operativo de mi PC de escritorio a la nueva versión de Fedora (Fedora 12), poco antes de comenzar la descarga tomo consciencia de un molesto problema en la interacción entre el Driver propietario de NVIDIA y unos cambios en la versión de X [.org] (el servidor gráfico).

La solución hasta el momento? No utilizar el driver privativo de NVIDIA si es posible. Desafortunadamente, esto no es una opción viable para mi, por lo cual no tengo más remedio que esperar a que arreglen este problema en X,  NVIDIA libere un nuevo driver privativo que lo solucione o bien no migrar a Fedora 12 en absoluto.

Probablemente el 90% de nuestros lectores esté pensando en este momento la malvada empresa que es NVIDIA, ya que no solo no liberan el código del driver de sus tarjetas de video, sino que ni siquiera pueden hacerlo andar bien sobre Linux porque quieren favorecer otras plataformas. Esta gente probablemente también piense que el código privativo es malo y que que dios mata a un gatito cada vez que instalamos software privativo en nuestros PC’s con Linux. Para quienes piensen esto, me tomo la libertad de recordarles que hasta hace poco NVIDIA resultaba ser la única opción viable para tener gráficos 3D acelerados por hardware en nuestros sistemas Linux.

ATI por años le dió la espalda al mundo Open Source (hasta que AMD se los compró y los obligó a empezar a liberar cosas para Linux) mientras que los drivers de video de Intel parecen volverse peores y peores con cada nueva generación de productos que liberan.

Personalmente pienso que si hay que hecharle la culpa a  alguien, hay que mirar a la gente de X. X se ha vuelto un software tan inmenso y complejo como obsoleto y realmente pienso que la única forma de arreglarlo sería dejar de agregarle parche sobre parche, capa de abstracción sobre capa de abstracción y de una vez por todas tirarlo a la basura y comenzar de nuevo de cero.

Esta vez preferiría que mi “servidor gráfico” no fuera Cliente/Servidor, por favor! Gracias!

Posted in Bug, Fedora, Linux, Sistemas Operativos | 3 Comments

Introducción al Concepto de Google Chrome OS

Excelente introducción al concepto de Google Chrome OS.



El video fue presentado en el Blog oficial de Google el día de hoy, al mismo tiempo que anunciaban la liberación del código del Sistema Operativo bajo una licencia Open Source.

El código (probablemente en estado pre-alfa, dado que que falta 1 año para liberar la versión 1.0) se encuentra disponible en el sitio oficial del proyecto, y pueden encontrar instrucciones para compilarlo e instalarlo aquí. El código también se puede navegar online aquí

Ref: Google.

Posted in Linux, Sistemas Operativos | 1 Comment

Fedora vs. Ubuntu

Restan tan solo 3 días para la liberación de la nueva versión de Fedora Linux.

Desde hace tiempo tengo instalado un Ubuntu 8.10 en mi PC de escritorio y he estado considerando la posibilidad de actualizar a una versión más reciente del mismo, en particular estoy considerando la posibilidad de migrar definitivamente a sistemas 64 bits para sacar provecho a la enorme cantidad de RAM sobre la que ese PC está sentado y no está pudiendo aprovechar.

Ubuntu 9.10 (Karmic Koala) parecía un candidato ideal para tal actualización. Sin embargo, tras conversar con amigos que ya dieron el salto y preguntarles por su experiencia, desafortunadamente la conclusión parece ser clara: en algún momento Ubuntu decidió sacrificar estabilidad por facilidad de uso.

Un amigo en particular me comentaba, refiriéndose a Karmic Koala, que “la interfaz de usuario esta mucho mejor, sin embargo tiene problemas (…) Python tiene conflictos”. Si bien este tipo de cosas dan un poco de pena, es claro que Canonical (la empresa detrás de Ubuntu) hace tiempo decidió ponderar la facilidad de uso por encima de otros factores que hacen al Sistema.

En directa contraposición con esto se encuentra Fedora, una distribución cuyo público objetivo son los desarrolladores de Software, no los usuarios finales.

Habiendo hecho uso de distintas versiones del Sistema Operativo (pasando por Fedora Core 3, Fedora 8 y Fedora 10 64 bits), conozco la distribución y sé que se amolda perfectamente a mis necesidades como desarrollador.

Es una pena que Ubuntu haya decidido ponderar que Juan Promedio se sienta cómodo con la distribución por encima de ser una plataforma estable y viable para el desarrollo de Software, no obstante, distintos proveedores tienen distintas visiones sobre lo que debería comprender un sistema basado en Linux y estoy seguro que todos están apuntando a la porción del mercado a la que desean pertenecer.

Probablemente Ubuntu se encuentre en una etapa de captar usuarios nuevos y por lo tanto tenga sentido hacer de la plataforma algo lindo y fácil de usar, no obstante, personalmente pienso que este curso no es algo que la gente de Canonical quiera mantener a largo plazo, sino correrán el riesgo de que su base de usuarios se componga mayoritariamente de gente a la que realmente la plataforma no le importa.

Posted in Linux, Sistemas Operativos | 3 Comments

Ataque de Pánico

Me encuentro en Picando Código, el blog de Fernando Briano, un enlace a un corto publicado en YouTube que trata sobre un hipotético ataque a la ciudad de Montevideo por parte de robots y naves.

El corto, de tan solo 5 minutos de duración, no tiene desperdicio. Es impresionante la calidad de los efectos especiales así como de toda la realización en general.

En lo personal el corto me dejó un sabor a introducción de juego de Red Alert de la saga Command & Conquer. Quizás si alguien quiere hacer un juego de estrategia en el marco del Plan Ceibal, pueda utilizar este video como fuente de inspiración.

Sin más, les dejo embebido el corto en cuestión.


Vía Picando Código.

Posted in Video | Comments Off on Ataque de Pánico

Finalmente, Firefox supera a IE6 en mercado

Muchos desarrolladores Web deben haberse regocijado frente a la noticia que se publica hoy en Slashdot. Firefox estaría superando a Internet Explorer 6 en cuota del mercado -al menos en lo que refiere a EEUU y Europa-.

De acuerdo con el artículo, esto era algo esperable, dado que la popularidad de IE se encuentra disminuyendo constantemente, mientras que otros navegadores, incluyendo Chrome, Safari y -por supuesto- Firefox continúan creciendo en número de usuarios.

“La verdadera vergüenza consiste en que IE6 (que es la versión más odiada del navegador de Microsoft) sigue siendo la más popular que las subsiguientes versiones 7 y 8”, sentencia el artículo.

A nivel de Uruguay, Internet Explorer continúa siendo el navegador más utilizado, sin embargo su porción del mercado ha disminuido considerablemente con el pasar del tiempo. Como se puede ver en la siguiente figura de StatCounter, la popularidad del navegador de Microsoft ha caído de casi un 70% a poco más del 50% en el correr de poco más de un año:

Crecimiento de Navegadores en Uruguay Julio 2008 - Noviembre 2009

Crecimiento de Navegadores en Uruguay Julio 2008 - Noviembre 2009

Como se puede ver en la gráfica, la tendencia es bastante significativa. Internet Explorer (en todas sus versiones) pierde popularidad en nuestro país, al expensas de otros navegadores que, literalmente, se están comiendo su porción del mercado.

Ref: Slashdot.

Posted in Desarrollo Web | Comments Off on Finalmente, Firefox supera a IE6 en mercado