Primer encuentro con Windows Vista

El pasado fin de semana me toco ver una computadora con Windows Vista. Me llamo la atencion pensando que era Mac en una PC (algo ya muy comun hoy en dia).

Puedo decir lo que ya venia comentando desde hace mucho tiempo: Visualmente no tiene nada que no se haya visto antes: Se parece cada vez a MacOS, y Linux y XGL ofrecen mejores propuestas.

No puedo decir que estoy decepcionado de Vista porque ni siquiera esperaba algo en particular, pero despues de leer las mil y una razones por las que no cumplieron lo que habian propuesto (WinFS por ejemplo) y ver los graficos que muestra, solo puedo lamentar que tendre que instalarlo y aprenderlo por aquello de los trabajos. Lo bueno es que raramente uso Windows. Me quedo con XGL. De hecho, Fedora Core 6 desarrollo su XGL propietario y es el default en este sistema operativo.

Mejor a instalar MacOS y jugar con el y Linux.

Linux es listo

Desde hace como 3 semanas comence a notar que en la maquina de la casa algo raro estaba pasando, y solo en Linux: La computadora se apagaba de repente. A veces dejaba bajando archivos por la noche, y al despertar, la computadora estaba apagada. Otras simplemente estaba viendo algun video y sin mas ni mas se apagaba.

Comence a pensar que podria ser, y como buen samaritano me fui a ver /var/log/messages. Cual va siendo mi sorpresa cuando encuentro estos mensajes:

CPU0: Temperature above threshold. cpu clock throttled.
CPU1: Temperature above threshold. cpu clock throttled.

Despues de mas de un an~o de usar la computadora, de haberla dejado prendida por semanas sin ningun problema, esto se me hizo muy raro. Para verificar, ingenuamente reinicie en Windows, y aqui no pasaba nada no importaba lo que hiciera. Se me ocurrio instalar __Speed Fan__ y __Motherboard Monitor__ para verificar velocidades de ventiladores, voltaje y temperatura del CPU. En efecto, de los 3 sensores existentes, el 3ro. me marcaba temperatura arriba de 70 grados, pero Windows es tan considerado que no hace mucho al respecto. Claro, si tienes instalados programas como los anteriores, puedes poner alarma, hacer que corran ciertos programas cuando un valor rebasa el umbral que tu mismo puedes seleccionar, etc. Sin embargo, en Windows si puedes seguir trabajando sin problemas.

Lo que se me ocurrio fue que algun proceso de SuSE estaba usando mucho tiempo de procesamiento, asi que a arrancar de nuevo en Linux, revisar y leer. Me encontre con que el updater que usa SuSE por default, el __zmd__, tiene 2 procesos __parse-metadata__ y __update-status__, que practicamente se comen todos los recursos cuando se ejecutan. Hay forma de quitarlos, cierto, pero hacerlo significa que me tengo que chutar todo sobre __Skim__ para poder hacer los updates online, ya que __yast2 update-online__ realmente no me sirvio de mucho. Total que hice un par de pruebas para ver si ese era el problema, pero lamentablemnte al estar viendo un video, de nuevo la computadora se apago.

Al reiniciar, decidi leer un poco mas al respecto, y me encontre con algo tan simple, que me sorprendi de nuevo, ya que al ser ingeniero, generalmente pensamos de forma complicada y muchas veces la solucion optima es la mas simple: Polvo en algun ventilador… Segun habia revisado en los programitas de Windows, los ventiladores funcionaban bien, ninguna estaba detenido, todo sin problemas. Abri la maquina, la prendi y vi que en efecto, los 3 ventiladores funcionaban sin problema. “Cual polvo?” pense. Durante un rato y despues de que se volvio a apagar la maquina, decidi revisar mas detenidamente.

Mi procesador es un Pentium D 830, a 3.2 Ghz. A primera vista, el ventilador parecia no tener problemas, pero cuando vi mas de cerca me di cuenta de que debajo del ventilador todos los conductos por donde el aire podria entrar estaban tapados… Si, llenos de polvo. Procedi a limpiar el area, reinicie y adios mensaje en Linux, adios apagadas repentinas. Todo volvio a la normalidad.

Estuve a punto de rayarsela a SuSE, pero despues de darme cuenta de que, despues de todo, era burrada mia, volvi a valorar las ventajas que te da Linux sobre Windows. Igual en Windows tambien hay algo similar o se puede configurar dentro del sistema operativo sin instalar nada aparte, pero el hecho de que ni siquiera me mandara aviso de temperatura alta le quita mas puntos de los pocos que ya tiene en mi escala.

Linux es listo…

De la actualizacion de Ubuntu 6.06 a Ubuntu 6.10

Lei un poco, parecia facil, pero despues de ver los comentarios de los que no lo lograron en las paginas de los pocos que si lo lograron, me la pense, y paseando por ubuntuforums me di cuenta que despues de todo no era una buena idea.

Dicen que hay mejoras interesantes en Edgy, pero casi todo mundo sugiere que mejor se haga la instalacion desde cero, puesto que es muy probable que las cosas truenen, y a fin de cuentas haya que instalar todo desde cero… Gurus de Ubuntu terminan desesperandose porque no saben a que moverle cuando truena la actualizacion… Bonita cosa. Y yo que pense que el update de Windows era complicado. Mejor sigo con 6.06 de momento. Ya que tenga vacaciones igual hago la actualizacion o instalo Debian Etch, que se supone en ese entonces ya debe ser “stable”, aunque siguiendo el consejo del panda, para mi es mucho mejor la version “unstable”.

En la casa sigo contento con SuSE 10.1 y XGL con Compiz-Quinn. Gasta muchos recursos, cierto, pero se ve increible. Ademas, hay plugins que se me hacen muy utiles, como el de Scale, para poder seleccionar rapidamente una ventana de entre todo el monton que tienes en el mismo escritorio y sin tener que pasar de una por una con Alt+Tab o ir a la barra de tareas.

Insisto: Quien se acuerda de Windows Vista? Todavia ni sale y sigue habiendo quejas…

Cuando realmente comence a manejar Linux

Aunque tengo realmente mucho metiendole mano a Linux, no fue sino hasta que estuve en Japon cuando realmente aprendi a manejarlo a nivel que pudiera decir: Se Linux.
Menciono esto porque se ha hecho mucho ruido sobre la proxima salida del Windows Vista, y en especial, por todas las promesas que se hicieron sobre ese sistema operativo que no seran cumplidas.



En la maquina de mi casa en Mexico maneje Slackware durante un rato, y aunque no tenia todo configurado como hubiera querido, me ayudo a saber mas o menos que se le tenia que mover cuando se queria hacer determinada actividad. En mis trabajos, e incluso en el servicio social cuando estaba en la universidad, maneje Solaris, HP-UX y otras variaciones de Unix, un sistema operativo llamado OpenVMS, y algunas distribuciones de Linux, principalmente SuSE y Mandrake (este ultimo malisimo).

Fue gracias al panda que le puse Linux a la laptop en la que estoy escribiendo en este momento. Sabia que queria ponerle Linux, pero no sabia que distribucion usar, asi que el me recomendo Debian, y con esa, y la distribucion rara que tienen aqui en el laboratorio llamada Vine Linux (que no es mas que una version de Red Hat con toda la configuracion para japones hecha automaticamente), dure toda mi maestria. Hubo de todo: Enojo, frustracion por no saber como hacer todo lo que queria hacer, etc. Veia los sitios de informacion sobre Linux, screenshots de los escritorios de la gente que lo manejaba y las comparaba con mi maquina y sencillamente nada que ver… Tuve que leer mucho, realmente mucho, ademas de darle muchisima lata al panda para que me auxiliara en innumerables ocasiones, pero, como siempre, todo esfuerzo rinde frutos.



No quiere decir que ya se todo sobre Linux, pero al menos ya me muevo como lo haria en Windows, es decir, ya se que hacer, a que moverle, que programa usar cuando requiero hacer X o Y actividad, los servicios que hay que levantar, mas o menos para que sirve para cada uno y cositas asi. Cierto que mi experiencia como administrador de red en la universidad y en mi primer trabajo me ayudaron mucho, pero el hecho de estar solo y de moverle hasta que las cosas salgan sirvio y mucho. Y cuando no se como hacer algo, leo, trato de buscar o le sigo pidiendo ayuda al panda, aunque ahora entiendo mucho, mucho mas de lo que me dice, comparado con hace 3 an~os.



La gente esta emocionada con Vista… y mi pregunta es basicamente, por que? Por los efectos visuales que tiene? Basta ver algun sistema operativo de Mac para ver que no tiene nada de nuevo lo que intenta Microsoft. Existen tecnologias como XGL que presentan un propuesta mucho mas interesante en materia visual, y viendo eso y al nuevo Leopard de Mac, aunado claro a la funcionalidad, a lo interno, uno se pregunta si realmente la actualizada a Vista vale la pena. Claro, a fin de cuentas hay que instalarlo y aprender como se hacen las cosas ahi, porque, despues de todo, los numeros son frios, y estos indican que aproximadamente el 90% de computadoras personales del mundo usan Windows… Odio el soporte tecnico, pero ahi esta algo de trabajo que no se puede negar.



Me da gusto poder escribir esto desde Linux, en este caso, desde Ubuntu; me da gusto poder usar SuSE Linux 10.1 en casa como mi sistema operativo principal, para programar, crear documentos, ver peliculas, bajar archivos, etc. Para muchos, esto quiza no signifique nada. Para mi, mucho, porque me ha permitido ver en donde falla Microsoft y en donde falla tambien Linux, porque nada es perfecto en este mundo.



A Linux todavia le falta ser mas amigable de lo que ya es si es que quiere meterse como verdadera opcion para el usuario comun, y aunque las tendencias estan cambiando, parece que todavia tomara tiempo para que la verdadera transicion comience.

Frustracion, creo.

Tenia mucho que no programaba en C++, y hablo de varios an~os. Ando haciendo un programita para aprender teoria de programacion de juegos y resulta que el ‘#)&$”&($”()( programa truena al momento de que se manda llamar el constructor de un objeto. Lo peor del caso es que este constructor se manda llamar muchas veces antes de la vez que truena, entonces, el codigo no esta mal. Falta de memoria acaso?

La estructura del programa es la siguiente:

Piece: Un objeto que simula una pieza en un rompecabezas.
Puzzle: Un rompecabezas completo. Tiene una propiedad table que es un arreglo bidemensional de Piece.
Node: Simplemente la implementacion de una lista ligada.
AStarSearch: El algoritmo de busqueda para la solucion del problema. Como podran deducir por el nombre, es el A*.

Por supuesto que uso apuntadores para todo, y he revisado el codigo una y otra y otra vez y la verdad no se por que no funciona. Al momento de querer agregar un elemento a una de las listas se crea un nuevo Puzzle, y por consecuencia varias Piece. Pero a la tercera Piece, el programa me manda Segmentation Fault. Ya estuve debugeando con gdb y no encuentro nada.

Como bien dijo Omar, sin duda C y C++ son mis lenguajes favoritos, pero odio este tipo de errores. Por supuesto que la probabilidad de que sea una idiotez mia es muy grande (de hecho ese debe ser el problema), pero odio pasar un dia entero viendo y viendo y viendo codigo que es mio, que por logica funciona y que nomas no hace lo que se supone debe hacer.

Me voy a casa a seguirle alla. Es viernes por la noche, y Emi esta ocupada con el dia deportivo de la preparatoria donde trabaja. Sera una noche larga y solitaria, y ya me duele la cabeza.

Mi primer homebrew

Posiblemente la mayoría de ustedes no saben que desde hace tiempo me he metido mucho al desarrollo de juegos caseros (Homebrew) para el PSP. Tenía un poco de miedo de no acordarme de C y C++ porque tenía mucho que no programaba en ellos, pero decidí ver más o menos en qué nivel andaba y las buena noticia es que todavía tengo C y C++ todavía muy bien.

Aunque por razones personales no puedo hacer público el código de mi primer homebrew (técnicamente no es muy llamativo, pero sentimentalmente tiene mucho valor), sí puedo poner aquí un breviario de lo que hice y cómo lo logré, en caso de que a alguien le interese.

**¿Qué se necesita para programar homebrew?**
Primero, saber programar. Sobra decir que saber programar no significa saber un lenguaje en específico, sino saber crear algoritmos. En el PSP se puede programar en LUA, pero para tener realmente control de todo el hardware del PSP se recomienda C o C++. Para personas que todavía tienen problemas en estos lenguajes, LUA es bueno para comenzar. Mi recomendación es C/C++, y el SDK se puede encontrar aquí.
Aquí hay una mala noticia: El SDK usa toolchains, y solo funciona en Linux. La buena noticia es que los usuarios de Windows pueden instalar Cywing para emular un sistema en Linux. De cualquier forma, se necesita un conocimiento básico de Linux para poder moverse dentro de él.
Segundo, una idea. No importa que tan bueno se sea programando, si no se tiene una idea de qué hacer, no se puede ir a ningún lado.

**Programación en C/C++ en el PSP**
Las librerías que se necesitan ya vienen incluídas en el SDK. Las funciones que se necesitan para manejar el hardware hay que aprendérselas, pero las funciones generales de estos lenguajes son las ya conocidas (stdio.h, math.h, etc.).
Estos tutoriales son buenísimos para comenzar. El programa “Hello World” funciona, pero al autor se le olvidó agregar 2 include que son necesarios para que el programa corra:

#include pspdebug.h
#include pspkernel.h

Para compilar, se tiene que crear un Makefile con ciertas opciones especiales. Algunas de ellas son necesarias para agregar determinadas cosas al ejecutable final:

PSP_EBOOT_TITLE = “Titulo”. Solo es visible cuando no hay background
PSP_EBOOT_ICON0 = ICON0.PNG El ícono que se verá en la lista de juegos en el menú “Game”. Tiene que llevar ese nombre.
PSP_EBOOT_PIC1 = PIC1.PNG El background que se pondrá cuando el juego esté seleccionado en la lista. Tiene que llevar ese nombre.
PSP_EBOOT_SND0 = SND0.AT3 El sonido que se reproducirá mientras el juego esté seleccionado. Debe estar en formato ATRAC3 forzosamente. Es relativamente fácil convertir un archivo a este formato si se tiene el códec correcto.

El ejecutable para el PSP es llamado EBOOT.PBP. Si se compila solo con make, el resultado es un archivo para firmware 1.00, pero si se compila con make kxploit, el resultado son 2 carpetas con el nombre del programa, una de ellas con un % al final del nombre, y en cada una habrá un EBOOT.PBP. Hecho esto, solo hay que copiar el resultado a la carpeta PSP/GAME y listo, a disfrutar el resultado.

Aunque realmente no es tan difícil como se piensa, tampoco es que a la primera se van a tener buenos resultados. El PSP es una pieza de hardware que, en comparación con las computadoras modernas, tiene recursos limitados, y éstos se pueden acabar rápido si no sabemos lo que estamos haciendo. Hay que practicar y mucho, y sobre todo, tener paciencia. No vamos a lograr un buen programa con solo saber cómo hacer homebrew. Hay que hacer un proyecto y seguirlo poco a poco (a menos que ése sea su trabajo).

**¿De qué sirve saber programar homebrew?**
Lo primero que se me viene a la mente es diversión aunada con conocimiento. Hacer un programa siempre es interesante, más cuando se trata de un objeto que es parte de tus pasatiempos más importantes. Pero además, si uno se vuelve realmente bueno, puede ser que alguna compañía de videojuegos nos contrate. Parece sueño guajiro, pero así le pasó a PSMonkey, un conocido desarrollador de homebrew para el PSP. El contrato con su nueva compañía tiene una cláusula que le impide realizar homebrew, pero el trabajo que se consiguió creo que sí lo vale.

Para la bitácora.

Estudiando

Mi examen de reconocimiento de patrones es dentro de una semana. Apenas hoy terminé de leer por completo todo lo que vimos en el curso, así que me queda una semana para reforzar lo aprendido.

Siempre me ha fascinado el conocimiento, y siempre estoy ansioso por conocer más, así como también por llegar a la razón de las cosas, al por qué surgen. De ahí que convertirme en ingeniero haya sido una buena opción.

En la clase, si bien es cierto que vi cosas que son por demás obvias y que se conocen desde los primeros años de la universidad (a veces desde antes), también se mezclaron términos y técnicas que, si bien básicas, nunca las había visto, o bien, las conocía, pero no a fondo. Algunas de ellas son las que necesitaba para el proyecto que tenía recién llegué a Japón, un proyecto que, aunque ya abandoné porque se aleja mucho de lo que estoy haciendo ahora, es una buena idea que puede servirle a alguien como tesis en un futuro, y todo se basa en reconocimiento de imágenes y de cuerpos en movimiento dentro de una animación.

No estoy 100% seguro de que pasaré el examen, pero al menos sé y me queda como siempre la satisfacción de que aprendí algo nuevo. Algunas palabras o conceptos suenan muy profundos, pero en verdad solo los vimos por encima:

  • Patrones
  • Imágenes en blanco y negro
  • Grayscale
  • Ventajas y desventajas de los diferentes formatos de imágenes.
  • Técnicas de compresión de información en imágenes
  • Búsqueda de líneas y bordes que deberían estar unidos
  • Reconocimiento de patrones
  • Imágenes a color
  • Diferentes formas de representación de colores (RGB, Manzel, XYZ, L*a*b*, NTSC)
  • Identificación de cuerpos dentro de imágenes de color
  • Animaciones
  • Diferentes formatos de animación (Real Media, QuickTime, MPEG, AVI, 3gp)
  • Técnicas de compresión de información en animaciones
  • Codecs
  • Reconocimiento de cuerpos en movimiento dentro de animaciones
  • Aplicación del reconocimiento de patrones en el mundo real.

Deséenme suerte para el 31. La voy a necesitar.

Encerrado en Windows…



Aunque no quiera, tengo que estar trabajando en Windows de momento debido a lo de el aumento de los experimentos, y siendo que el sistema viejo lo tengo en ese sistema operativo, me tengo que aguantar.

Como no puedo hacer nada más, decidí que al menos quería ver diferente al sistema de las ventanas, y después de preguntarle al profesor Google, en la imagen de arriba se puede ver como dejé el Windows de mi laptop. Hasta la skin de Winamp quedó justa con ese color.

Además del cambio visual, el hecho de que la barra de tareas se haga más pequeña me ayuda mucho, ya que mi monitor no aguanta más de 1024×768 de resolución, y es realmente absurdo, porque la tarjeta de video si aguanta todavía resoluciones más grandes.

En fin, Tifa me alegra el día aunque sea un poco. Estoy harto del viejo sistema.

Ni me pregunten como voy, que estoy casi para llorar.

Al menos ya he estudiado algo para mi examen del 31, pero me falta todavía aprenderme más términos y más valores (y en japonés).

Está lloviendo. Hoy no hace tanto calor.

Mini How-to: Redes inalambricas en Linux

Como el panda me pidio que pusiera esto como un mini how-to, aqui pego el mensaje que escribir en Anim::Arte respecto a wi-fi en Linux, esperando que a alguien le sea de utilidad.

—–

Hay de 2 sopas para el wireless en Linux: O hay un driver que soporta tu tarjeta o usas ndiswrapper con los drivers de Windows.

La primera es la más bonita y podemos decir que la más fácil (ndiswrapper no tiene ninguna ciencia). Es cuestión de tener el módulo correcto y activarlo con modprobe. Acto seguido, hay que dar de baja la red wired, porque si no, da problemas:

ifconfig eth0 down

Luego, hay una serie de herramientas llamadas iwtools que te ayudan a configurar y buscar las redes inalámbricas.

iwlist [identificador de la red inalámbrica] scan : Te regresa una lista con las redes inalámbricas que haya por ahí.

iwconfig [identificador de la red inalámbrica] essid [ESSID de la red a la que te quieres conectar]

iwconfig [identificador de la red inalámbrica] mode [modo de la red inalámbrica (casi por lo general managed)]

iwconfig [identificador de la red inalámbrica] key restricted [El WEP de la red a la que te quieres conectar si son puros números | s:[WEP de la red con números y letras]]

Después de esto, ya es configurar la IP normalmente o pedir una con dhcpd o dhclient

En caso de que tengas que usar ndiswrappe, primero tienes que instalarlo. Si tu distribución te permite instalarlo directamente, hazlo, si no, bajas el código fuente y lo compilas e instalas, pero necesitarás tener las fuentes de tu kernel para poder hacerlo (que tampoco son difíciles de conseguir). Una vez instalado, te vas a donde tienes el driver de tu tarjeta en windows (.INF) y lo instalas con:

ndiswrapper -i [driver.INF]

Para revisar que esté instalado correctamente, le das ndiswrapper -l Te tiene que decir “driver present, hardware present”, especialmente lo último es importante, porque quiere decir que sí reconoció tu tarjeta. Si tu tarjeta es PCMCIA, entonces métela antes de darle este comando.

Ahora, a cargar ndiswrapper:

modprobe ndiswrapper

En este momento, tu tarjeta debe quedar ya “prendida”, y puedes seguir los pasos explicados arriba para configurar la red.

Si quieres “apagar” tu tarjeta, basta con descargar el ndiswrapper con:

rmmod ndiswrapper

Imagenes de Xgl

Hace poco mas un mes comente sobre Xgl por primera vez, y hace poco volvi a mencionarlo cuando hice el recuento de las instalaciones que le he hecho a mi laptop. Sin embargo, nunca he puesto aqui imagenes de Xgl, que aunque ya no es relativamente nada nuevo (porque se pueden encontrar donde sea), al menos la gente que no esta tan metida en el mundo de la computacion se puede dar cuenta de que hablo cuando digo que es simplemente sorprendente.

El zoom. Se puede hacer a cualquier parte del escritorio. Perfecto para mostrar algo muy especifico o tambien para la gente que no ve bien. Aqui, tomando la esquina superior izquierda de la ventana de firefox.

El cubo de los escritorios virtuales. Al cambiar, rota. Se puede “jugar” con el mouse. Con una tarjeta de video decente, puede haber corriendo video y no se congela, ni se retrasa. Aqui, muestro mi escritorio 1 (derecha) y 4 (izquierda). Noten la imagen del fondo: Es un PNG del mar en Hawaii.

Noten la ventana semitransparente. Se puede ver la ventana de atras a traves de ella.

El efecto de scale. Todas las ventanas hacen zoom out, uno escoge la que necesita, le da click, y automaticamente se hace zoom in, con el focus en la ventana seleccionada.

Hay cambios con respecto a la version que salio junto con OpenSuSE 10.1. Ademas, ya esta disponible para otras distribuciones. Vale la pena probarlo.