Me he Mudado!

goodbyeHe dejado de escribir en este blog. Tras más de 3 años de posts, tutoriales e imágenes que comenzaron en Blogger, luego pasaron por LinuxUruguay y finalmente concluyeron aquí en Algorithmia, vamos a dar por cerrado este capítulo.

Voy a mantener este sitio activo para que se pueda seguir accediendo a los tutoriales que hemos recolectado a través de los años, quizás a alguien le resulten útiles en algún momento.

¡Gracias por acompañarnos todo este tiempo!

Saludos,
Varrojo.-

Posted in Blog Admin | Comments Off on Me he Mudado!

Revertir iPhone 3G a iOS 3.0

Tras mucho tiempo sufriendo iOS 4 finalmente he encontrado una forma de revertir mi iPhone 3G al viejo y querido iOS 3.0

iOS 4 es un sistema operativo móvil excelente y, si bien esperaba con anticipación su llegada, resultó no ser un sistema operativo adecuado para mi iPhone 3G. iOS 4 redujo la velocidad de muchas tareas de todos los días en forma significativa, haciendo que la experiencia de usuario se degradara bastante.

Afortunadamente, logré encontrar este artículo sencillo que explica como revertir nuestro software. Los pasos son más sencillos de lo que hubiese imaginado, si bien es necesario conocerlos de antemano para poder aplicar el procedimiento correctamente. Este proceso resulta algo bastante difícil de adivinar. Les copio la idea general debajo:

Para restaurar nuestro teléfono será necesario hacerlo entrar en modo DFU (también llamado modo de “Recovery”). Para esto podemos utilizar una herramienta llamada RecBoot, que puede descargarse de aquí: http://jaxov.com/2010/05/recboot-iphone-recovery-mode/

Cuando el teléfono se encuentra en modo Recovery, iTunes nos indicará que será necesario reestablecerlo. El truco consiste en hacer que iTunes reestablezca el teléfono desde una imagen de iOS de la versión 3.0. En esta página se pueden encontrar muchísimas imágenes. Es importante seleccionar la correspondiente a nuestro hardware, por ejemplo, en mi caso yo quiero la de iOS 3.0 para iPhone 3G.

Para indicarle a iTunes que utilice la imagen descargada en vez de la más reciente (correspondiente a iOS 4.2), debemos hacer click con el botón Option o Shift (dependiendo de si estamos en Mac o Windows) para que se nos presente la opción de seleccionar la imagen.

A medida que avanza el proceso, en un determinado momento les aparecerá un mensaje de error. Este mensaje, según tengo entendido, se debe a que no es posible hacer downgrade de la baseband del teléfono. De todos modos y apesar del error, iOS 3.0 ya estará instalado, por lo cual lo único que necesitamos hacer ahora es utilizar RecBoot para sacar el teléfono de modo Recovery para poder bootear.

Ten en cuenta que al hacer una operación de restore, todos los datos en tu teléfono serán borrados y probablemente no puedas levantar tus últimos backups automaticamente debido a la diferencia de versiones entre el backup y tu iPhone. De todos modos, si recientemente habías sincronizado tus contactos, no los deberías perder.

A su vez, todas las aplicaciones compiladas para una versión posterior a tu sistema operativo no podrán ser instaladas. Ten esto en cuenta si necesitas una aplicación que no está disponible para iOS 3.0.

Más allá de estas consideraciones, hacer downgrade a 3.0 recupera la performance del iPhone 3G que habíamos perdido con el iOS 4. Puede que perdamos algunas funcionalidades (como carpetas o threaded mail), pero considero que lo que ganamos a cambio es mucho más valioso: nuestro tiempo.

Si te preguntas por qué reestablecí a iOS 3.0, pues fue para poder seguir haciendo Tethering sobre Ancel ; )

Posted in iPhone, Tweaking | 2 Comments

Compilar e Instalar OSS 4

Si siguieron mi tutorial sobre como instalar Quake 4 sobre Fedora Linux o bien si han instalado Open Sound System (OSS) 4 en su sistema, eventualmente les sucederá como a mí y notarán que se quedan sin sonido a nivel de todo el sistema.

El problema se caracteriza por Fedora no siendo capaz de encontrar ninguna tarjeta de sonido instalada, por más que lspci nos muestre que el hardware está presente y los módulos del Kernel de OSS se encuentren cargardos.

El motivo por el cual esto sucede es que (para mi sorpresa) los binarios de OSS que se encuentran disponibles en esta página: www.opensound.com/download.cgi disponen una licencia de evaluación que tras un período de 6 meses expira, dejándonos sin sonido.

Aparentemente estos binarios son provenientes de los viejos tiempos, una época anterior a que OSS se volviera Open Source. Es por esto que OSS “expira” y reinstalar los binarios no resuelve el problema. La solución es compilar OSS desde el código fuente e instalar esta nueva versión.

A continuación detallo los pasos a seguir para compilar e instalar OSS 4 (probado sobre Fedora 12 de 64 bits).

Primero deberás descargar el código fuente de OSS, disponible aquí: http://developer.opensound.com/.

Desempaqueta el fuente mediante el siguiente comando:

$ tar -xjf oss-v4.2-build2004-src-gpl.tar.bz2

Esto creará un directorio llamado “oss-v4.2-build2004-src-gpl/”. Ahora, OSS (a diferencia de cualquier otro proyecto que haya tenido que compilar) requiere que ejecutemos el script “configure” en un directorio vacío, distinto del de desempaquetado.

Para esto creamos un nuevo directorio e iniciamos el script:

$ mkdir oss
$ cd oss/
$ ../oss-v4.2-build2004-src-gpl/configure

Una vez ejecutado, iniciamos la compilación mediante el comando make.

$ make

En mi caso, el proceso de compilación falló debido a la falta de una herramienta llamada “libtool”. Afortunadamente, en Fedora, un simple “yum provides *libtool” nos indica el nombre del paquete que provee la herramienta faltante. En este caso se trataba de “libtool-2.2.6-18.fc12.1.x86_64”.

Habiendo instalado libtool, y volviendo a ejecutar make el proceso de compilación resultó exitoso. Un detalle a tener en cuenta es que el proceso de compilación intentará compilar varios módulos de Linux, para lo cual es necesario disponer de los headers correspondientes a nuestro Kernel instalados.

Finalmente, ejecutando “make install” como root se instalarán todos los módulos necesarios. Es importante que, si ya disponías de la versión binaria de OSS instalada mediante rpm, primero deberás desinstalarla.

Nota: utilizo el prefijo “root$” para denotar comandos ejecutados como el superusuario, ¡no ingreses esto en tus comandos!

Desinstalar OSS 4 instalado mediante rpm:

root$ rpm -e oss-linux-v4.2-2003.

Instalar nuestro OSS 4 compilado:

root$ make install

Para probar si la instalación fue exitosa podemos utilizar los siguientes comandos (aún como root):

Habilitar OSS:

root$ soundon

Probar OSS:

root$ osstest

Espero que este post le sirva de utilidad a alguien que se encuentre con el mismo problema. Puedes encontrar más información sobre cómo compilar OSS en el siguiente link: http://www.opensound.com/wiki/index.php/Building_OSSv4_from_source.

Posted in Fedora, Linux | Comments Off on Compilar e Instalar OSS 4

Artículo de Linux Journal disponible para leer en línea

Me complace el poder anunciar que el artículo introductorio a CUDA que escribí para RealityFrontier, y que fuera publicado por la revista Linux Journal, se encuentra disponible en línea para ser leído.

Puedes encontrar el artículo aquí: http://goo.gl/jFz3z. En él encontrarás una introducción a la programación en paralelo usando la tecnología CUDA de NVIDIA y unos screenshots que tomé con un programa que escribí específicamente para ayudar a exponer los conceptos tratados en el artículo.

Si lo deseas, puedo dejar un link a todo el código fuente del artículo, utilizado para realizar los benchmarks. Tan solo déjame un comentario.

Enjoy!

Posted in CUDA, Linux, Programacion | Comments Off on Artículo de Linux Journal disponible para leer en línea

Despedimos el 2010: saludos y stats

Como ya es costumbre, despedimos el 2010 que se nos va deseando a nuestros lectores un muy feliz 2011 lleno de felicidad y nuevas oportunidades.

En Varrojo@Linux queremos agradecerles por acompañarnos durante todo el año y nos despedimos por un tiempo con algunas estadísticas que marcaron este 2010 para nosotros.

El año 2010 en retrospectiva, según Varrojo@Linux:

  • Este fue nuestro primer año completo bajo el dominio de Algorithmia, habiendo venido de LinuxUruguay y, previamente, de Blogger. En este año, este Blog, cumplió 4 años de vida, alcanzando los 330 posts (+1) a la fecha.
  • Al igual que durante años anteriores, este año continuamos expandiendo nuestra sección de Tutoriales, habiendo desarrollado la Saga del Quake 2, donde se documentó el desarrollo de nuestro Renderer propio de Mapas y Modelos de Quake 2 junto con Screenshots y Videos.
  • A nivel personal, este año aprendí a programar en el lenguaje de programación Lua, aprendí un poco de Ocaml y programé mucho en C y C++. También practiqué bastante Objective-C.
  • Durante el 2010 también se continuó trabajando en el desarrollo de aplicaciones para plataformas nicho, habiendo continuado con el desarrollo de Ceibal-Chess para XO, así como varias aplicaciones prueba-de-concepto para iPhone e iPad.

A continuación dejo algunas estadísticas de este sitio desde el 30 de Diciembre de 2009:

  • Durante este año contamos con 8.380 visitas, provenientes de 5.758 personas distintas.
  • La mayoría del tráfico provino de búsquedas Google (60.21%), seguido por links en otros sitios (24.28%) y, finalmente, por tráfico directo (15.69%).
  • Al igual que el año pasado, la mayoría de nuestros visitantes fueron de Uruguay (3.034), seguido por España (1.552), Mexico (1.166), Argentina (536), Chile (431), Colombia (360), Perú (253), Venezuela (179), Ecuador (127) y Costa Rica (92).
  • Cada visitante pasó, en promedio, 1 minuto 24 segundos en el sitio.
  • Los días que el Blog fuera más visitado fueron el Jueves 14 de Octubre y el Jueves 4 de Marzo con 72 y 66 visitantes respectivamente.
  • El navegador más utilizado por nuestros lectores fue nuevamente Firefox (47.49%), seguido por lejos por Chrome (17.86%), Safari (17.83%) e Internet Explorer (13.70%).
  • El Sistema Operativo más utilizando por nuestros visitantes fue nuevamente Windows, subiendo poco más de 1% con respecto al año pasado (49.84%), seguido por Linux (28.00%) y Mac OS X (20.00%).
  • Finalmente, la página más visitadas durante este año fue la portada, seguida por Configurar IP Estática en Fedora 10, Configurar Impresora/Escaner en FedoraConfigurar iPhone sobre Ancel.

Queremos agradecerles por habernos acompañado y ayudarnos a hacer de este año el más significativo en la historia de nuestro sitio.

¡Felices fiestas y esperamos verlos en este 2011!

Posted in Blog Admin | Comments Off on Despedimos el 2010: saludos y stats

Si OpenGL tuviera un Logo Feo…

No es secreto que el logo oficial de OpenGL tiene ya sus años. ¿Qué ocurriría si contratamos a la gente que diseño el nuevo logo de Antel para rehacer el logo de OpenGL?

Pues, gracias al sitio LogoFeo.com, podemos apreciar el horrendo resultado:


Logo Antelizado de OpenGL


– – Yikes!

Posted in Empresas | Comments Off on Si OpenGL tuviera un Logo Feo…

Rendering Mapas de Quake 2 – Video

A modo de cierre del proyecto, dejo un sencillo video que publiqué en YouTube mostrando el Renderer de Quake 2 funcionando.



Posted in C++, Computación Gráfica, OpenGL, Programacion, Quake | Comments Off on Rendering Mapas de Quake 2 – Video

Ceibal-Chess Beta 3 disponible

Ha pasado algún tiempo, sin embargo me complace poder anunciar la disponibilidad de la Beta 3 de Ceibal-Chess para las plataformas XO, PC y Mac. La nueva Beta nos aproxima mucho a la tan esperada versión 1.0 que esperamos poder liberar justo a tiempo para esta Navidad.


Ceibal-Chess en Español de Uruguay

Ceibal-Chess en Español de Uruguay



Esta nueva versión de Ceibal-Chess incluye varias mejoras, concentrándose principalmente en las siguientes áreas:

  • Mejor Integración con Sugar.
  • Internacionalización, soporte para Español e Inglés.
  • Mejoras Visuales*

Mejor Integración con Sugar

La nueva versión hace uso del excelente paquete “sugargame” para mejorar significativamente la integración entre Pygame y Sugar.

La Beta 3 permite acceder al Marco y terminar/reanudar la Actividad desde la Vista Personal. También se resuelve el problema de “ícono muerto” en el escritorio tras ejecutar Ceibal-Chess, el cual prevenía que la Actividad pudiera iniciarse dos veces consecutivas.

Internacionalización

Ceibal-Chess soporta ahora internacionalización de Strings y la nueva versión se distribuye con soporte para los idiomas Español e Inglés. Contribuciones para otros idiomas serán bienvenidas, si alguien se encuentra interesado.

Ceibal-Chess debería detectar automáticamente el idioma en el cual se encuentra la plataforma y seleccionar su propio idioma en función de dicho entorno. En caso de que un entorno no sea soportado, se revertirá a Inglés automaticamente.

Mejoras Visuales

Ceibal-Chess incluye un efecto de transición entre estados del tablero (mediante Alpha Blending). Este efecto requiere Pygame 1.8 o superior. En plataformas donde se dispone de Pygame 1.7, este efecto se encontrará dehabilitado y un mensaje será escrito en el Log.

Descarga

Pasos para XO:

  1. Remover la Actividad “Ajedrez”, si esta se encuentra instalada y reiniciar Sugar (Ctrl + Alt + Erase).
  2. Iniciar la Actividad “Navegar”, dirigirse a http://www.ceibaljam.org y hacer click en “Descargas”.
  3. Identificar la fila correspondiente a “Ceibal-Chess” y descargar el bundle “ajedrez.xo”. Una vez descargado, seleccionar “Abrir” en el navegador.

Pasos para otras plataformas (Windows, Linux, Mac con Python y Pygame):

  1. Iniciar el navegador Web e ingresar la siguiente dirección: http://www.algorithmia.net/software/download.py?dl=ceibal-chess-beta.zip
  2. Descomprimir el zip y dirigirse al Directorio “ceibal-chess-beta3”.
  3. Ejecutar el script “main.py”.

Reportar Errores

Como siempre, su feedback es invaluable para corregir problemas y asegurarnos que Ceibal-Chess se encuentre en un buen estado para alcanzar la versión 1.0.

Para reportar errores, por favor utilizar el siguiente formulario: http://code.google.com/p/ceibal-chess/issues/list

Posted in ceibal-chess, Computación Gráfica, Programacion, Python | 2 Comments

Rendering de Mapas de Quake 2 – Skybox

Tras un poco de trabajo extra, finalmente implementé soporte para dibujar una aproximación de los cielos del Quake 2.

Algo que me tenía bastante confundido era cómo dibujar los polígonos que tenían mapeada una textura de cielo de la forma en que se veían en el juego. Finalmente, lo que decidí hacer fue simplemente eliminar todos estos polígonos y dibujar una Skybox acorde a las dimensiones de la bounding box del mapa.


Rendering del cielo en base2.bsp.



Hasta donde tengo entendido, esto no se encuentra tan fuera de lo que se realizaba en el juego, ya que cada mapa BSP define un conjunto de texturas a mapear sobre una hipotética Skybox que no se encuentra definida en ningún lado. Esto me lleva a pensar que los polígonos mapeados con textura de cielo, los cuales ahora no se renderizan, son en realidad un artefacto para el algoritmo de determinación de visibilidad y no un instrumento visual.

Para renderizar el cielo desarrollé un nuevo Shader que elimina la porción de traslación de la matriz ModelView, haciendo que el cielo se encuentre “infinitamente” lejano. A nivel de mapeo de texturas, utilicé CLAMP_TO_EDGE para ocultar las aristas de la Skybox. El efecto es bastante sorprendente: incluso sabiendo dónde se ubican las aristas, resulta difícil notar las caras interiores de la Skybox.


Cuarto de exteriores en base1.bsp, renderizado con su cielo.

Cuarto final en base1.bsp. Notar el cielo a través de las ventanas y el techo.


Posted in C++, Computación Gráfica, OpenGL, Programacion, Quake | 4 Comments

Configurar WiFi Broardcom sobre Ubuntu Maverick

Configurar la placa de WiFi Broadcom encontrada en Hardware como un Dell Mini 10 es una tarea bastante complicada.

Por defecto Ubuntu Maverick provee un driver privativo que se supone funciona, sin embargo tras usar la placa por un tiempo, alunos problemas se hacían evidentes incluyendo desconexión del WiFi (sin posibilidad de poder volverse a conectar) y eventuales crashes del Kernel.

Dado que el driver nativo para Linux provee tantos problemas, la alternativa natural que se presenta es intentar utilizar el driver nativo de Windows XP a través de ndiswrapper.

Personalmente, estaba un poco olvidado de como utilizar ndiswrapper, pero revisando este hilo en LinuxQuestions.org recodé lo sencillo que es el proceso.

Simplemente debemos bajar el driver apropiado para la placa de WiFi (el de Windows 7 o Vista, hasta donde tengo entendido, no funcionaría), extraer del EXE los contenidos del driver, en particular nos interesa los archivos .inf y .bin y luego, para “envolver” el driver e instalarlo utilizamos los comandos:

sudo ndiswrapper -i filename.inf
sudo ndiswrapper -m
sudo echo "ndiswrapper" >> /etc/modules

Con esto debería estar pronto el driver. Si por algún motivo queremos luego removerlo, podemos utilizar ndiswrapper -l para listar los drivers instalados y ndiswrapper -e para eliminar un driver determinado.

Para probar si todo funciona, debemos rebootear la computadora. Si al volver a iniciar sesión, obtenemos un mensaje de “firmware missing” (puede corroborarse utilizando dmesg o networkmanager), entonces debemos extraer el firmware e instalarlo en /lib/firmware.

Para hacer esto, para una placa Broadcom, utilizamos el programa b43-fwcutter. En los foros de Ubuntu se encuentra una excelente guía sobre como hacer esto aquí.

Lo que debemos hacer es descargar un par de archivos con un dump binario del firmware y extraerlos utilizando b43-fwcutter. Los archivos son broadcom-wl-4.150.10.5.tar.bz2 y wl_apsta-3.130.20.0.o y pueden descargarse del paso 2 del tutorial.

tar -xjf broadcom-wl-4.150.10.5.tar.bz2
sudo b43-fwcutter -w /lib/firmware wl_apsta-3.130.20.0.o
sudo b43-fwcutter --unsupported -w /lib/firmware broadcom-wl-4.150.10.5/driver/wl_apsta_mimo.o

Con esto ya estaríamos en condiciones de manejar nuestra conexión a WiFi medante NetworkManager.

Unas consideraciones a tener en cuenta incluyen:

  1. Se debe desactivar el driver privativo que se instala mediante el gestor de drivers restringidos de Ubuntu para poder deshacernos de dicho driver defectuoso.
  2. Los pasos descritos en este tutorial sirven para el caso en que, sin el driver, no hay conectividad. En caso de que el sistema operativo pueda conectarse al Access Point o Router, pero no pueda enviar datos a través de él, deberá agregarse a la blacklist de módulos el driver que el Kernel está utilizando para poder hacer uso de ndiswrapper.

Tas realizar estos pasos, la placa de red WiFi parece estar funcionando correctamente, sin desconexiones y con una velocidad de transferencia mucho mayor a la del driver nativo para Linux.

Happy Networking!

Posted in Linux, Tweaking | 1 Comment