sábado, septiembre 05, 2009

Si tocas este código, te mueres.

Dentro de los programas hay algo llamado comentarios, que son guías para cuando alguien lea nuestro código pueda entender lo que quisimos hacer, y lo que se hizo realmente.

Y realmente a más de alguno le nace el Nicanor Parra que lleva dentro y por diversas razones, odio a sus jefes o restricciones de tiempo o simples magias que se usan, se terminan agregando comentarios que destacan por sobre otros.

Hace un tiempo salió a la luz un archivo que decía tener el código fuente de windows 2000, y si bien podemos dudar de la veracidad del código que hay dentro, no se puede dudar que son reales programadores los que escribieron los comentarios.

Uno de mis favoritos se puede encontrar en private\windows\media\avi\verinfo.16\verinfo.h:

* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!IF YOU CHANGE TABS TO SPACES, YOU WILL BE KILLED!!!!!!!
* !!!!!!!!!!!!!!DOING SO FUCKS THE BUILD PROCESS!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dice: "Si cambias las tabulaciones a espacios, te mueres. Hacerlo "caga" el proceso de construcción.

Representa una de las guerras santas en términos de programación. Usar espacios o tabulaciones para indentar el código. Que cuando hablamos de lenguaje castellano, es como ponerse a pelear si hacer sangría con espacios o tabulaciones.

Otra de mis selecciones es cuando trata de idiotas no se si a la aplicación o al equipo que lo hace, pero aún así:

// The specific idiot in this case is Office95, which likes
// to free a random pointer when you start Word95 from a desktop
// shortcut.

Dice: El idiota específico en este caso es Office95, que disfruta de liberar un puntero aleatorio cuando inicias word95 desde un acceso directo del escritorio.

Y para finalizar con windows 2000, una de las cosas que le pasan a todo programador, arreglos ultra chanta para puro hacer funcionar el programa. Soluciones poco elegantes, y que avergonzarían al más ordinario de los programadores.

private\inet\mshtml\src\site\layout\flowlyt.cxx:
// God, I hate this hack ...

Dice: Dios, odio este hack

private\ntos\w32\ntuser\client\nt6\user.h:
* The magnitude of this hack compares favorably with that of the national debt.

Dice: La magnitud de este hack se compara con la deuda nacional.

Otro de los comentarios que me parecen dignos de mostrar son aquellos que están seguros de que otra persona modificará el código, e inclusive advierte no hacerlo:

// Dear maintainer:
//
// Once you are done trying to 'optimize' this routine,
// and have realized what a terrible mistake that was,
// please increment the following counter as a warning
// to the next guy:
//
// total_hours_wasted_here = 16

Dice: Querido mantenedor:

Una vez que hayas terminado de optimizar esta rutina(código),
y te hayas dado cuenta del terrible error que fue,
por favor incremente el siguiente contador como una advertencia
al siguiente sujeto:

total_horas_desperdiciadas_aca = 16;

Finalmente quisiera destacar un comentario encontrado dentro de un juego llamado Erika to Satoru no Yumebōken. Un autor que se dedica a traducir de japonés a inglés posteó lo que pudiera ser el máximo exponente de mensajes escondidos en código(ir al post original para la versión en inglés):

Esta es una canción nostálgica. Esos eran buenos tiempos. Mientras tanto, ¿quién diablos son las personas de este proyecto? Por fin se acabo, cualquiera pensaría que son puros buenos recuerdos. Usemos este espacio para dar agradecimientos.

Primero que nada, Kaoru Ogura, que te corriste del proyecto con un tipo. Si, tu bastarda. Ni se te ocurra venir a la oficina sin bañarte despues de tener sexo 6 veces la nocha anterior. Siguiente, Tatsuya Ōhashi. Si tu bastardo, no me vengas con esa mierda frívola, llegando tarde el día que entregamos el ROM como si nada pasase. Puedes darme todo el porno que quieras, pero jamás olvidaré esa. Todo el peso que subiste, con razón pagaste 18.000 yenes y a lo más te dieron un beso. Kenji Takano, depurador de Namco. Eres part-time, no andis "webeando" con el jefe de proyecto. Y finalmente, Kiyoharu Gotō, la mayor espina en este proyecto. Si tu bastardo, apenas obtenga mi maquina del tiempo, te mando a la era Edo. Andate allá a hacer tus puzzles.

Pensándolo bien, algunas personas fueron útiles. Sr Okada, quien se llevó todas las cosas buenas. Se todo sobre tus tendencias anormales. Yamagishi, que juraste de alejarte de los prostíbulos hasta terminar el proyecto. Anda a saciarte ahora


En cualquier caso, la anterior fue una versión recortada a la cual le puse una traducción bastante libre de lo que decía originalmente.

Lo mejor en todo caso de este último comentario, es que existía la posibilidad de desbloquear dicho mensaje con una combinación estilo mortal combat y hacerlo aparecer en el final del juego.

A estas alturas no puedo evitar preguntarme ¿Cuántos de nosotros habremos querido colocar comentarios así?. Por lo menos yo me he sentido tentado.

martes, agosto 25, 2009

La licencia no cubre la RAM señor

Es un hecho conocido dentro de los "nerds" la limitación de los procesadores de 32 bits de ser incapaces de administrar 4GB de RAM. Pasa lo mismo con un canasto de jugetes de un niño, este puede usar todos los juguetes que tiene a su alcance, pero los que están más abajo son inalcanzables para el, lo que significa en que esos juguetes quedan sin uso. El procesador no es capaz de acceder a espacios de la RAM que le quedan demasiado lejos. Lo cual hacía que teniendo físicamente 4GB de RAM el sistema marcase alrededor de 3.

Si bien lo anterior tiene fundamento teórico correcto, lo que sucede en realidad es que los procesadores tienen una forma de acceder a estos espacios de RAM lejanos, igual como si el niño le pidiera a un adulto que le pasara los juguetes. El asunto es que Windows no deja que lo utilices por asunto de licencias. Es decir, el código está, pero no te deja utilizarlo.

Geaoff Chappel prueba en su entrada que Microsoft es el que impide que se pueda utilizar una tecnología existente hace más de una década, sólo ofrecida para versiones 2000 y 2003 ambas server:

That 32-bit editions of Windows Vista are limited to 4GB is not because of any physical or technical constraint on 32-bit operating systems. The 32-bit editions of Windows Vista all contain code for using physical memory above 4GB. Microsoft just doesn’t license you to use that code

Los procesadores de 32 bits en Windows Vista están limitados a 4GB no por una limitación física o técnica. Todos las ediciones de 32 bits de Windows Vista contienen código para usar memoria sobre los 4GB. Es sólo que Microsoft no licencia ese código


Las razones para esto no debiera llamarnos la atención. Ya que para solucionar cualquiera de estas limitaciones, simplemente se compra un procesador de 64-bits, con su correspondiente sistema operativo de 64 bits, lo cual en efecto está pasando, lentamente pero sucede, lo incómodo es igual como pasan verdades a medias a los clientes.

El autor finalmente da una vuelta sobre esto. Toma el ejemplo de Windows Vista versión Ultimate, en la cual uno espera conseguir todo lo que ofrece Vista, es decir, paga una licencia gigantesca para obtener todo, pero en realidad sigue quedando con código sin licenciar, que impide romper el límite de los 4GB, utilizando el término Ultimate como un elemento de engaño o por lo menos embole.

miércoles, agosto 05, 2009

Agregar flickr a blogspot

Blogspot no ofrece una manera directa de agregar flickr, pero eso no quiere decir que sea imposible. Blogspot ofrece la posibilidad de insertar html con javascript y flickr tiene una forma para crear html que crea una vitrina de tus fotos :).

En primer lugar debemos crearnos una "badge", que es algo asi como una vitrina de tus fotos. Está un poco escondido el asunto por lo que tengo el vínculo directo. Luego de entrar con nuestra cuenta, se nos presentan 2 opciones:

Puedes seleccionar tanto una vitrina en html o en flash. Yo lo hice con una html, no se si realmente puedes meterle un swf a blogspot. Después de elegir, podemos pasar a elegir el contenido(next: choose content).

En este punto podemos elegir si queremos mostrar nuestro contenido público, el que tiene determinada tag(etiqueta) o el contenido de cualquiera. Una vez determinado el contenido podemos pasar al layout o distribución en pantalla del contenido.

En el layout tengo seleccionada las opciones de no mostrar mi avatar, solo quiero mostrar fotos. Quiero mostrar 3 fotos, en un tamaño thumbnail, y la orientación en none, para dejar que blogspot se encargue del espacio. Podemos ahora pasar a la sección de colores.

Acá es recomendable dejar No background, para que respete los colores del blog, el borde es cosa de gusto, a mi no me gusta :P.

Ahora en el último paso de flickr, podemos copiar el código listo para usar en blogspot.

Lo que nos resta es utilizar este código en blogspot. Obviamente tenemos que entrar como administrador a nuestro blog, y dirigirnos a la zona de personalización. Acá se nos ofrece la opcion "Añadir un gadget". Aparecerá una lista de la que debemos seleccionar "HTML/Javascript", luego pegar el código que nos dió flickr y poner un título. Guardar, y debería aparecer la vitrina en la zona que seleccionamos del blog.

viernes, julio 31, 2009

El plan B

Hoy en el rincón cultural del blog, quisiera compartir 3 lecciones que he aprendido en el tiempo que llevo trabajando para la UdeC.

Las decisiones son de plasticina

A diferencia de lo que pueda decir Moisés, ninguna decisión tomada en el trabajo debe estar grabada en piedra. Es normal comprometerse con las decisiones que se toman, en caminos que van a tomar, soluciones a utilizar, e inclusive herramientas para trabajar. Pero siempre hay que estar dispuesto a escuchar opiniones nuevas, y a su vez ser capaz de cambiar la decisión tomada inicialmente.

También es muy importante tener argumentos que respalden este comportamiento. La idea no es aparentar darse vuelta la chaqueta simplemente por azares del destino, sino porque algo hizo cambiar la visión de las cosas.

Siempre tener un plan B

Esto es parte del punto anterior. Siempre que uno toma una decisión en la cual hay aspectos riesgosos, tener un plan B. Cuando se está diseñando, uno sueña, y el papel se llena de pensamientos mágicos. Cualquier solución elegante que se tome, puede fallar, por lo que siempre se debe tener una solución, por muy sucia que sea.

Lo primero que debe hacer un SW es funcionar

Este para mi es una de mis pocas reglas que podríamos decir que está en plasticina ya endurecida. No importa que te sepas miles de patrones que quieres aplicar, o de los tiempos que tengas que acatar, ni de lo poco elegante que está quedando el SW. Lo primero que tiene que hacer un SW es hacer lo que se le pide. Luego viene todo lo demás, importante también, pero no lo primero.

martes, julio 28, 2009

Lag LCD Rock Band y Guitar Hero

Malditos LCD. No son tan bonitos como los pintan, los negros no existen, sólo grises, los colores no son tan vivos, y cuando juego cualquiera de los juegos de música que tengo, se me generaba un lag terrible, o sea, diferencia entre el momento que necesito apretar un botón, y el tiempo en que se realiza la acción que genera el botón.

PEROOOOO, los LCD tienen una resolución tremenda, es decir, el nivel de detalle de un LCD es altamente superior al de un CRT, fuera que son más livianos y utilizan mucho menos espacio, por lo que me negaba a volver al tele de "tubos" para jugar dichos juegos.

Después de tanto investigar, descubrí que la serie de samsung que tengo (A550), tiene un modo llamado Entertainment en la sección de Input. Si en dicho modo se activa GAME, la televisión pierde bastante sharpness, lo que hace que los bordes dejen de ser tan lisos, pero también reduce bastante el proceso que le hace a la imagen antes de mostrarlo, lo que al final me terminó arreglando el problema de Lag :).

Ahora bien, con esto podía escuchar directo desde el televisor sin ningún problema. El asunto es que también cuento con un receiver yamaha, que me permite escuchar dolby y todas esas marihuancias. Lo que igual producía un desfase o Lag. Al final la solución fue utilizar el modo straight, evitando el proceso que trae la señal digital.

Con estos dos simples arreglos, puedo disfrutar de un tema en hard sin ningún error no forzado :).

viernes, junio 26, 2009

El playlist de la life

Jugando Guitar Hero Smash Hits, escuché una canción que no escuchaba hace muchos años. Es impresionante como cualquier sentido es capaz de hacer funcionar la memoria.

Y aun siendo fanático de mis ojos es muy raro que vea una foto y me acuerde del colegio, o de la universidad. En general, son canciones las que me hacen pensar que mis recuerdos hasta podrían ser de la semana pasada.

Lo más seguro que esto sea común, pero me gusta escuchar Queen y pensar que estoy en 8vo, Joe Vasconcellos en 2do medio y Coldplay en 3ro. Para que decir Keane, cuando conocí a una persona especial, y Franz Ferdinand en mis últimos años de U.

domingo, junio 07, 2009

Experiencia Chilebox y amazon, comprando en usa.

Hace tiempo que tenía ganas de comprar un libro de actionscript, y dado que no es tan popular sin el apoyo de flash, me vi forzado a comprarlo en una tienda fuera del pais.

Por lo que decidí sacarle las telarañas a mi cuenta en amazon y utilizarla por primera vez fuera de usa.

Primero que nada tuve que crear una cuenta en Chilebox, un servicio de encomiendas desde usa de Chilexpress. Para esto tuve que superar mi miedo por entregar el maldito rut.

El proceso es gratuito y simple, das tus datos, aceptas y ellos te dan 2 direcciones. 1 para documentos y otra para paquetes.

Luego fui a amazon, en donde seleccioné el libro que quería, puse agregar al carrito y luego checkout. Afortunadamente mi libro caía en la categoría de envío gratis o "FREE with Super Saver Shipping". Completé los datos de la dirección utilizando los que me dió Chilebox en Miami, pero como nada en el mundo es tan fácil, Amazon avisó que había algo raro en la dirección. Afortunadamente me ofrecía una corrección, como ellos saben mucho más, decidí luego de una pequeña deliberación respetar la corrección.

En la zona de billing hay que poner donde llega la cuenta de la tarjeta de crédito. ¡¡NO LA DE CHILEXPRESS!!.

Finalmente amazon te entrega un seguimiento en todo momento de donde está el paquete. Y una vez que llega a miami, chilexpress te da el aviso de recibir un paquete y que ya se iniciaron los trámites para ingresar el paquete al país, en este punto se puede pedir donde quieres que llegue el paquete, por mi parte solicité en la oficina del mall.

Entre otros detalles finales: La compra no me apareció en la cuenta hasta días después. Me cobraron contra entrega y además dan boleta del servicio(no todas las compañías que traen de USA dan). Finalmente me salió 1 dólar más que si lo hubiese pedido directamente, pero me llegó por lo menos una semana antes.