Blogia

Las Pequeñas Paranoyas de Motagirl

Richard Stallman en Alicante

Richard Stallman en Alicante

Niños, niñas, elefantes voladores y demás: vayan vaciando sus agendas para el martes 12 de mayo a las 17.30 porque... ¡viene Stallman!

La pista la dio VicenteJuan en twitter, y tras una rápida búsqueda en google encontré la fuente original de la noticia, en la FreeSoftwareFoundation, right here. Según pone, y suponemos que será cierto,(cito textualmente),

Alicante, Spain. Aula CAMON, Avd. Ramón y Cajal, 5, Torrevieja. Richard Stallman hablará sobre las metas y la filosofía del movimiento del Software Libre, y el estado y la historia del sistema operativo GNU, el cual conjuntamente con el núcleo Linux ahora es utilizado por decenas de millones de usuarios en todo el mundo.

Lo único malo, malísimo, es que  es mi tarde con  más clases (ninguna obligatoria, aunque sí recomendables) y que es en Torrevieja. Pero seguro que encuentro alguien para hacer una excursión.... o eso espero :S

Edit:

Parece ser que podría haber un error en la noticia original, y que fuera en Alicante-Alicante, puesto que en esa misma calle y número (pero en Alicante) existe una CAM (google maps says). Esto es lo que ocurre cuando en todos los pueblos de los alrededores hay una maldita Avenida Ramón y Cajal XD

Cuentos según el metal

Hace unos meses vi en el blog de Esti  un articulillo en modo coña de cómo  serían los cuentos tradicionales si  fueran estilos musicales. 

Pongo los que más graciosos me parecieron, para verlos todos, en su blog. Y sí, la imagen es cosecha propia, el castillo que aparece es el Castillo de la Mota, que está en Medina del Campo. Y cada cuál que saque sus propias conclusiones xD

castillo, dragon, princesa, heroe y caballo

Versión original:

En lo alto de un castillo, hay una linda princesa, que es custodiada por un terrible y gigante dragón.

 

POWER METAL
El protagonista llega al castillo en un caballo blanco alado, escapa del dragón, salva a la princesa, se van lejos y hacen el amor.

HEAVY METAL
El protagonista llega al castillo en una Harley Davidson, mata al dragón, se toma unas cervezas con la princesa y después lo hacen.

FOLK METAL
El protagonista llega con varios amigos tocando el acordeón, el laud, violín, y otros instrumentos extraños. El dragón se queda dormido de tanto danzar, y luego se van... sin la princesa.

VIKING METAL
El protagonista llega en un navío, mata al dragón con un hacha, lo cocina y se lo come. Viola a la princesa, saquea el castillo y le prende fuego a todo antes de irse.

BLACK METAL
Llega de madrugada, en medio de la neblina, mata al dragón y lo empala frente al castillo. Sodomiza a la princesa, la corta con una daga y bebe su sangre en un ritual antes de matarla. Después descubre que ella no era virgen y la empala junto al dragón.

NU METAL
Llega al castillo y se jacta de lo bueno que es peleando y de que es capaz de ganarle al dragón. Pierde miserablemente y queda hecho mierda. Huye y encuentra a la princesa, le cuenta su trágica infancia. La princesa lo cachetea y se va a buscar al protagonista de ’Heavy Metal’. El protagonista ’Nu’ se toma un prozak y se va a grabar un disco de ’The best of’.

ROCK N’ROLL CLÁSICO
Llega en una moto fumándose un troncho y se lo ofrece al dragón, que resultó que era su amigo. Luego acampa con la princesa en la parte más apartada del jardín, y después de mucho sexo, drogas y rock n’ roll, tiene una sobredosis de LSD y muere ahogado en su propio vómito.

PROGRESIVO
Llega, toca un solo virtuoso de guitarra de 26 minutos. El dragón se mata de tanto tedio. Llega donde la princesa y toca otro solo explorando todas las técnicas de tonos y compases aprendidas en el ùltimo año en el conservatorio. La princesa huye buscando al protagonista de ’Heavy Metal’.

HARD ROCK
Llega al castillo en un convertible rojo, acompañado de dos rubias pechugonas y tomándose una botella de Jack Daniels. Mata al dragón con un cuchillo y luego hace una orgía con las rubias y la princesa.

GLAM

Llega al castillo. El dragón se ríe tanto al verlo que lo deja pasar. Entra al castillo,roba la laca y el lapiz labial de la princesa. Luego convence al dragón de pintar el castillo de rosado y hacerse unos rayitos.

 

Portátiles chiquitines

Acabo de ver en Ubuntips esta bonita gráfica que (basándose en sus características) supuestamente te ayuda a saber cuál es el nombre "técnico" y "respetable" de tu ordenador portátil, puesto que "portatil chiquitín" no es muy descriptivo ^^ Por ejemplo: netbook, ultraportatil, etc etc

Ahí va:

Por ejemplo, en  mi caso:

- Acer Aspire ¿1391? (aka "mi portátil viejo"):  Is the PC worth more than $500? ->  YES -> Is the screen larger than 13"? -> YES -> You’ve got a plain old LAPTOP

- Dell XPS M1330 (aka "mi portátil nuevo"): Is the PC worth more than $500? ->  YES -> Is the screen larger than 13"? -> NO -> Does it have an optical disc? -> YES -> You’ve got an  ULTRA-PORTABLE

Puedes poner tus cosicas en los comentarios, que no muerden.

Hoy me gusta la primavera

Flores de ciruelo

Compartió conmigo la efímera y decadente belleza de la sombra nocturna de un ciruelo en flor.

Me hizo un ramillete.

Y luego me vio sonreir.

Dell XPS M1330 - Altavoces FAIL

Toda historia de amor tiene un momento clave: cuando descubres que tu amado, hasta entonces símbolo de perfección, también tiene sus fallos. Por ejemplo, que ronca, que le huelen los pies, o que su altavoz derecho distorsiona que da gusto.

Así es: a mi pequeño Dell XPS M1330 le empezó a ocurrir esto último hace unas semanas. Intenté ignorarlo, toquetear la ecualización y fingir que todo iba bien. Pero esto ya no puede seguir así. Mientras se mantiene a un volumen bajo o medio, no pasa nada. Pero en cuanto lo subo un poco más (aprox. 3/4 partes del total) el altavoz derecho empieza a hacer una serie de ruidos, crujidos y distorsiones. Vamos, que si estoy yo sola al lado del portatil, con el mundo en silencio, no pasa nada. Pero si necesito subir el volumen para alejarme unos metros, o hay ruido ambiental.... ya empieza a distorsionar u_u

Sí, ya se que los altavoces de portátiles no son gran cosa y todo eso, pero... ¡antes funcionaba!

Os pongo un video muy bonito mostrando lo que digo. El audio es El Hechicero del Bosque, de Hrsta. Cuando me acerco al altavoz izquierdo se oye más o menos bien. Si me voy hacia el derecho... ¡argh!:

 

Acabo de llamar al servicio técnico de DELL para comentarles lo de los altavoces, me ha atendido un chico encantador, y me ha dicho que la semana que viene me llamarán para venir a casa a cambiarmelos ^^

¡Ah! Y otra cosa. El disco duro me hace unos chasquidos feunos.. pero sólo cuando estoy en Windows. Vale que el 99% del tiempo lo paso en Ubuntu, pero aún así no tiene gracia. En principio, los discos duros que tenían chasquiditos eran los Seagate (de hecho sacaron una actualizacion de firmware que lo soluciona), pero el mio es Samsung. De todas formas se lo comentaré al técnico que venga, pero de momento os pongo otro video para que oigais los famosos crujiditos:

 

 

Sun OpenSource Technologies

(Disclaimer:  Esta entrada está basada en notas que he tomado durante una charla, así que probablemente no haya mucha coherencia entre párrafo y párrafo. No me lo tengais en cuenta. Tampoco voy a poner links, porque me puedo morir. ¡Usad un buscador! )

Esta mañana he estado en la sesión informativa de Sun OpenSource Technologies,  junto con los agradables mangarrufos Lord_Kote  y Scipion. Han sido tres intensas horas de información, self-promoting (esto era esperable), datos técnicos a porrillo, etc etc. en una pequeña sala que con15 alumnos  y 5 profesores ya estaba llena..  Por cierto, yo era la única mujer  no profesora... después de 5 años y todavía me sorprende xD

La sesión estaba planeada en tres grandes bloques:

1 . OpenSolaris
2.  OpenSPARC
3.  Programas Especiales para Universidades

De ellos, el que más interesante  me ha parecido es es  de openSPARC, pero puesto que ha sido el más "técnico" ha sido del que menos notas he tomado (muchos esquemas, datos y demás).  A cambio, sobre  OpenSolaris tengo miles de notas, así que tendré que dejarme cosas  en el tintero. Y sobre los programas para universidades, pues muy interesante también, pero ahi los estudiantes ni pinchamos ni cortamos.

En primer lugar, y con una Solaris 2008.11 sobre la que se había virtualizado Ubuntu y otros OSs (el ponente, un Arquitecto de Sistemas, se ha declarado  Ubuntero de corazón) nos han contado cosas de por qué Sun es guay: Solaris, SPARC, StorageTec, Java, MySQL... etc etc, que son la empres que más invierte en OpenSource por persona, etc.

Ya entrando en el tema de openSolaris, nos han contado que su objetivo es llegar a ser tan amigable como Linux, lo que venía reducido en la frase "Easy to Get-Install-Use-Maintain". Para ello, tenemos liveCDs, un instalador gráfico, el uso de Gnome/Compiz, repositorios de paquetes en la red (Image Packaging System, con unos 4000 paquetes actualmente). Estos paquetes están divididos en tres clases: Community (donde meten las last releases y el software de terceros), Sun (su software) y uno último, de pago, llamado Subscription (donde meten actualizaciones de seguridad, bugs y demas).

Han insistido bastante también en que la HCL (lista de  hardware compatible) es muy grande y va en aumento. Además, se supone que cuando vas a instalar Solaris,  se analiza el sistema y si hay algún driver no soportado, se avisa al usuario y se le indica dónde y cómo puede conseguirlo.

Una diferencia fundamental de Solaris con , por ejemplo, Ubuntu, es que está más orientado a unos objetivos comerciales. Por ello, sacarán una  nueva versión cada  5 años, pero manteniendo los updates trimestrales: La idea es evitar cambios drásticos frecuentes en sistemas grandes y/o críticos.

Después de la introducción, nos han contado las cosicas de las que se sienten más orgullosos: el ZFS, el D-Trace, CIFS incorporado en el kernel, el sistema de repositorios y AMP/MARS.

ZFS, que viene siendo Zettabyte File System es, como su nombre indica, el sistema de archivos. Nos cuentan que es el primer sistema de archivos de 128 bits, que es muy escalable y fiable, que la información siempre se mantiene consistente y que no se degrada, que es un sistema transaccional, que las instrucciones son atómicas, que es muy rápido  y que por todas estas cosas no necesita file-checks periódicos. Además, nos premite usar algo llamado "atributos" para garantizar un tamaño mínimo, elegir el algoritmo de compresión, el de cifrado, etc etc. Por cierto, han dejado caer que OS X Leopard utiliza ZFS para la famosa time-machine.

Todo esto de la consistencia y no degradación de los datos viene dado por  algo llamado Copy-On-Write (que crea duplicados del dato y de sus punteros en el espacio libre por si ocurre un imprevisto), otra cosa llamada End-To-End Checksums (que usa checksums de 64Kb separadas de los datos, garantizando que no haya pérdidas de datos ni "escrituras fantasma") y los Solaris Containers (que vendría a ser la virtualización de distintas zonas "estancas" (frente a las zonas globales) e independientes unas de otras, que sólo compartirían el núcleo de Solaris, lo que las haría más eficientes ocupando menos espacio).

El siguiente "punto gordo" es D-Trace, quees una herramienta de trazabilidad que usa unas 30.000 "sondas" activables o desactivables por el usuario para optimizar aplicaciones, permitiendo ver cómo responde el sistema operativo de una manera no intrusiva y ligera. Se supone que esto dota de flexibilidad y dinamismo al sistema porque no hace necesario el lanzamiento de un core dumped para ver dónde está fallando.

Para acabar con esta primera  parte, nos han hecho una comparativa con RedHat. Que el ciclo de vida de openSolaris es mayor, cómo se reparten el mercado, el precio de la subscripción (más o menos igual), el soporte hardware , etc.

Después, ha empezado la de OpenSparc. Nos han hablado de las tres línas de procesadores que Sun lleva en marcha. A saber: x86/x64, UltraSparc Sparc64 y UltraSparc CoolThreads, que es lo último que han sacado.

Ha comentado un poco el tema de los problemas en los procesadores: la latencia, debida a que la tecnología que desarrola memorias no tiene nada que ver con la que desarrolla procesadores (y cada vez se alejan más), y la velocida de reloj (cuyo aumento necesita un alto consumo energético, y por tanto, mucho calor). También se han comparado las tecnologías de single-threading con las de multi-threading. Como media, las primeras pasan un 85% de los ciclos esperando a la memoria, por lo que sólo ofrecen un 15% de tiempo  de uso. Por el contrario, el multi-threading ofrece una media de 85% de tiempo de uso.

Entonces, en 2005, a Sun se le ocurrió la idea de juntar CMP (múltiples núcleos) con HMT (múltiples hilos) para obtener lo que llamaron CMT: Chip Multi Threading. De ahí salió entonces el UltraSparc T1 (de nombre Niagara), que  a menos velocidad de reloj (entre 1 y 1.4GHz) y siendo mucho más simple que los procesadores comerciales del momento, era capaz de ejecutar más instrucciones. Algunos datos que nos han dado es  que ejecuta los threads de 4 en 4, y cada uno de estos grupos en un core (existe en versión de 4, 6 y 8 cores), que el acceso a la memoria es UMA y que consume muy poquito. Como dato curioso, inicialmente sólo tenía una FPU (unidad de coma flotante) lo que obviamente creaba cuellos de botella en aplicaciones que necesitaran usar dicha unidad (esto se arregló para la siguiente versión, la ultraSparc T2, donde metieron una FPU para cada core). A cambio del pequeño fail con la FPU, el sistema era perfecto para servidores web, LDAP y similares, puesto que incluía de serie una cripto-aceleradora embebida.

Respecto al ultraSparc T2, como ya dije, arreglaron el tema de la FPU (poniendo una en cada core), aumentaron los hilos a 8 por cada núcleo, y además embebieron el PCI,  la interfaz gigabit ethernet y los controladores de memoria, obteniendo así un SOC (System On a Chip)

Después, se sacaron de la manga el T2+ (Victoria Falls), también SOC y SMT (simultaneous multi threading), pero con algunos cambios para mantener la coherencia. Y ya que estaban, subieron a 128 threads por core.

Para terminar, nos habló de los problemas de estas tecnologías (como la escalabilidad, programabilidad, verificación y desarrollo de software), y nos ha contado algo sobre openSPARc:que es un procesador Open Source de 64 bits liberado bajo la GPLv2, que se pueden  obtener los  diseños online (wiki.opensparc.net) y que los donan a universidades y cosas así.

En este punto de la charla, alguien ha hecho una pregunta interesante: ¿En qué beneficia todo esto  del opensource a Sun? La respuesta ha sido que si fuera algo cerrado, se comerían el 100% de la tarta de beneficios, pero sería una tarta pequeña. En cambio, abriéndose  y liberando sus cosicas (por ejemplo, Java), consiguen ser más usados y conocidos, y por tanto, la tarta de beneficios crece ingentemente. Y aunque el porcentaje de beneficios  que se comen es más pequeño, es ingentemente más grande que la tarta pequeña entera. Vamos, que se supone que todos salimos ganando.

Despues, y muy rápido porque ya eran casi las 15.00 (se suponía que acabaríamos a las 14.00), nos han hablado de que tienen diferentes programas para las Universidades: donación de hardware y software (para uso docente o de investigadores), proyectos de fin de carrera, la suite Star Office, cursos de formación gratuita (SAI) con posibilidad de certificación, etc etc etc.

En definitiva, una  charla interesante sobre un tema, para mi, practicamente desconocido.

Aunque se les habían olvidado los CDs de openSolaris que se supone que nos iban a regalar (las prisas...), tenían algunas camisetas e "identificadores para el equipaje" que han repartido entre los que han hecho preguntas y cosas así. Yo no he hecho ninguna, pero al salir uno de ellos se me ha acercado y me ha dado un pack ^^ La camiseta es blanca y XL-hombre  (aka gigantesca, me la pondré en verano para dormir xD) con un logo azul grisaceo que pone "Sun, 25 years of innovation" y spam encubierto de AMD64Opteron en una manga. Respecto al identificador de equipaje, es naranja y blanco, con el logo de Java y el de Solaris , lleva escrito "Sun Tech Days, a WorldWide Developer Conference. Innovation Happens Here" y huele a plástico. A mí lo de Sun Tech Days me ha sonado a programar en verano al solanero junto a la piscina, pero no creo que se refieran a eso xD

Se supone que enviarán a un profesor las transparencias que han utilizado y él las colgará en su blog para que las podamos descargar (o eso he entendido), así que si a alguien le interesa ojearlas, que me lo diga y cuando me entere de que están disponibles se lo hago saber.

Moraleja: Buscaré  mi CD de Solaris 10, o en su defecto, pediré uno de OpenSolaris para trastearlo en mi portatil viejo y darle una segunda oportunidad (a Solaris)

Ale, me voy a teletransportarme que pierdo el bus.  Lo siento mucho si ha sido muy espeso xD

Acceso a la tabla de vectores de interrupción

Otro bonito capítulo sobre mis prácticas de periféricos, de esos que nadie comenta pero luego cuando nos cruzamos por el campus me rascais la cabeza y me dais las gracias :P

Esta no pensaba hacerla todavía,  pero por lo visto esta mañana  a las 7.00 mis vecinos han considerado divertido poner música a todo volumen (nunca antes odié a Bach) y pasear con tacones (o equivalente). Así que como no podía dormir, y no tenía nada mejor que hacer (en realidad sí, pero no importa), le he dedicado un rato a esta práctica que es muy sencilla.

La tabla de vectores de interrupción es un cacho de memoria (concretamente, desde el 0000:0000) en  el que se almacenan las direcciones de las funciones o rutinas que atenderán a cada interrupción. Es decir, que cuando se produce una  interrupción, se transfiere el control del sistema a la rutina situada en la dirección indicada en la posición de memoria especificada en la posición correspondiente de este vector.

Hay 256 interrupciones (la lista está aquí).Cada una, usa 4bytes de este vector: 2bytes para el offset y otros 2bytes para el segmento en que se encuentra la función (no, no me he equivocado: guarda primero el offset y después el segmento). Por tanto, en total la tabla ocupa 1KB. Además, cada interrupción está en la posición indicada por su número: La dirección de la interrupción 0 se encuentra en los 4 primeros bytes, la de la interrupción 1 en los 4 siguientes, etc. En definitiva: el offset de la dirección de la interrupción i se encuentra en el byte  tvi+4*i y su segmento en el tvi+4*i+2 (suponiendo tvi el inicio de la tabla de vectores de interrupción, o sea, 0000:0000)

Supongamos que no nos gusta la rutina normal de teclado, y queremos una propia que por ejemplo, en vez de escribir el carácter por pantalla, imprima el valor del código de teclado (es decir, el código de la tecla pulsada, que no depende del carácter sino  de la posición de la tecla y de si se pulsa o se suelta. Por ejemplo,  el ESC genera el scancode 1, el 1 genera el código 2, el 2 el 3, etc etc. La tabla completa está aquí -la Tabla90-). Podría ser algo tal que así:

void interrupt rutina_teclado(){

char codigo;
codigo = inport(0x60);

/*Blablablabla hacer cosas blablabla*/
outport (0x20, 0x20);

}

Inciso: Sí, pongo las llaves así, mucha gente lo ve raro pero ... a mi me parece más amigable que ambas en nueva línea. :P
Encuesta: ¿Cómo  las pones tú? xD

La palabra interrupt le indica al compilador que lo que está haciendo no es una función normal, sino una interrupción. O sea, que le está pidiendo al compilador que genere código para salvar y restaurar el estado de la CPU cada vez que se ejecute ese código (esa es la gracia de las interrupciones)

Con inport(0x60) lo que hace es leer el scancode de la tecla pulsada/soltada, y el outport(0x20, 0x20) simplemente es el  EOI (End Of Interruption), que hace que se salga correctamente de una interrupción. ¡Debemos usarlo siempre para terminar una interrupción!

Bueno, obviamente, esto así solito, en el limbo de los  códigos, no tiene mucho sentido, así que tendríamos que modificar la TVI para que cada vez que pulsemos una tecla, vaya a nuestra maravillosa rutina en vez de a la normalita. Como ya sabemos, la interrupción de teclado es la 9, así que lo que nos interesa está en esa posición (O sea, necesitamos un punterete hacia MK_FP (0 , 9*4)).

Lo primero, antes de romper nada, es guardarnos la dirección  de la rutina original. (Aunque si se rompe algo, que no panda el cúnico: basta con cerrar y abrir  nuestro maravilloso emulador de DOS). Para ello, guardamos en un par de variables el offset y el segmento, que como dije antes, están respectivamente en los dos primeros y dos siguientes bytes de 0 , 9*4.

Lo siguiente es modificar la posición de la tabla que nos interesa y decirle que ahora tiene que apuntar a nuestra rutina. El identificador de una función es en realidad un puntero a la misma, así que se convierte en algo tan simple como lo que sigue:

asm cli;
*(tvi+9*4)=FP_OFF(rutina_teclado);
*(tvi+9*4+2)=FP_SEG(rutina_teclado);
asm sti;  

Es importante desactivar la llegada de interrupciones antes de cambiar nada. ¿Os imaginais la super catástrofe que sería que se produjera una interrupción de teclado después de haber cambiado el offset pero antes de haber modificado el segmento? ¡Eso sí que sería una fieshta! Podemos hacerlo con  instrucciones en ensamblador: asm cli (desactivarlas) y asm sti (activarlas), una vez que se han modificado. Cuenta la leyenda que también se puede usar disable() y enable(), que están incluidas en dos.h . . . pero yo no las he usado así que no prometo nada.

Y una vez cambiado esto... ya podríamos casi decir que está todo hecho. Eso sí: En el tremendamente abierto "hacer cosas" de la rutina es bastante interesante configurar un caracter "de escape", para que cuando se detecte una  determinada tecla pulsada, se salga de la interrupción restaurando la rutina original (y así además te ahorras tener que cerrar el DOS para poder usar el teclado normalmente xD). Pero eso lo haceis vosotros: no os lo voy a dar todo mascadito :P

Fail típico 1: poner un while(salir==false) dentro de la rutina. Esto es absurdo, porque la rutina se invocará  SIEMPRE que pulse o suelte una tecla, así que el bucle no me hace falta.

Fail típico 2: llamar explícitamente a la función. ¡No hace falta! Vendrá ella solita cada vez que pulses una tecla.

Ale, espero que os haya servido de algo, y si no es así... al menos a mi me ha servido para "afianzar conocimientos". Acepto comentarios, mails y tabletas de chocolate :P

Os dejo con la típica captura de rigor: En ella pulso las teclas M O T A en ese orden. Si pinchais en la imagen y la veis en flickr,  le he puesto notitas explicativas ^^

sesion6 de perifericos

Por cierto, fe de erratas del artículo sobre Modificación de los patrones de bits de los caracteres: Comprobé una vez más el ejecutable sobre cmd, y resulta que no funcionaba por la  simple razón de que no lo tenía configurado en el modo 80x25 y en pantalla completa. En cuanto lo cambié, comenzó a tirar. Cosas que pasan XD

Meme de la escritura

Mira que es triste reutilizar un meme de twitter como actualización de blog, pero eah, es lo que hay xD

Meme escritura

En este caso, se trata del meme de la escritura (suena apocalíptico) que me pasó @dagandara. Se supone que se trata de escribir cualquier cosica en papel, subir la imagen y poner el link en twitter nominando a alguien. Yo lo he pasado (endosado, como bien pone xD) a @gosterros, @kitiaraCronopio y @semrah, pero si a alguien le hace ilusión puede cogerlo :P

 

The Velvet Underground - Venus in furs

Pues siguiendo con la tradición (casual), este martes vuelve a ser un  Martes Musical en el blog de mota ^^

En esta ocasión, tenemos a The Velvet Underground. Esta banda se formó en Nueva York a principios de los años 60, durando hasta los 70, y si no los conocíais todavía.... más vale tarde que nunca.

La letra quizá es un poco NSFW, por el tema sadomaso y todo esto,  así que la traducción os la dejo a vuestra imaginación (que siempre es más divertido)

Dentro video:

 

THE VELVET UNDERGROUND - VENUS IN  FURS

Shiny, shiny, shiny boots of leather
Whiplash girlchild in the dark
Clubs and bells, your servant, dont forsake him
Strike, dear mistress, and cure his heart

Downy sins of streetlight fancies
Chase the costumes she shall wear
Ermine furs adorn the imperious
Severin, severin awaits you there

I am tired, I am weary
I could sleep for a thousand years
A thousand dreams that would awake me
Different colors made of tears

Kiss the boot of shiny, shiny leather
Shiny leather in the dark
Tongue of thongs, the belt that does await you
Strike, dear mistress, and cure his heart

Severin, severin, speak so slightly
Severin, down on your bended knee
Taste the whip, in love not given lightly
Taste the whip, now plead for me

I am tired, I am weary
I could sleep for a thousand years
A thousand dreams that would awake me
Different colors made of tears

Shiny, shiny, shiny boots of leather
Whiplash girlchild in the dark
Severin, your servant comes in bells, please dont forsake him
Strike, dear mistress, and cure his heart

Haiku, de Tom Lowenstein

Acabo de terminar de leer Haiku, un precioso libro que ,como su subítulo indica, contiene poemas y meditaciones sobre la naturaleza y la belleza. Me lo regaló Peibol en las Navidades del año pasado ^^

Digo precioso porque, aparte de bonito por dentro, es bonito y muy elegante por fuera:

Haiku, de Tom Lowenstein

No se aprecia bien, pero lo dorado es en realidad dorado con un dibujo como de olas o plumas rojas encima, en relieve. Por dentro también es bastante agradable, puesto que todas (o casi todas) las páginas van ilustradas con imágenes e inspiradoras (creo que inspirar algo es la idea general de este libro jeje). Os pongo unas cuantas fotos de páginas abiertas al azar (calidad de imagen = NULL, pero es que no tengo la cámara a mano y tengo que tirar de móvil)

 

Haiku, de Tom Lowenstein Haiku, de Tom Lowenstein

Haiku, de Tom Lowenstein Haiku, de Tom Lowenstein

En el libro aparte de haikus, hay explicaciones sobre la cultura tradicional japonesa y su influencia en la sociedad actual, algunos apuntes sobre escritores famosos de haikus, etc etc.

Para los despistados, un haiku es un poema corto japonés, generalmente de 3 versos, que intenta captar un momento efímero. Los haikus clásicos tenían que constar de 17 sílabas (ordenadas 5-7-5) y contener un kigo (palabra relativa a la estación) y un kuregi (una palabra de corte), pero en el siglo XIX se comenzó a desechar esas normas rígidas, dando libertad a los poetas.

El contenido vendría a ser más o menos el siguiente:

1. La sociedad y la vida en la corte.

Aquí se nos cuenta un poco cómo  fue el período Heian, algo de historia sobre las tres grandes ciudades japonesas (Kyoto, Tokio y Osaka), algo sobre los emperadores y la corte, las artes militares y los samurais, los kimonos...

2. El mundo de los poetas

Se exponen  los temas recurrentes de la poesía japonesa (la belleza y la soledad) y cómo les afectó la sociedad, los orígenes del haiku y unas minibiografías de cuatro poetas clásicos: Bashō, Buson, Issa y Shiki.

3. Símbolos y creencias

Las distintas ramas religiosas que podíamos encontrar, como  el sintoísmo, el budismo zen, etc. Y otras cosas relacionadas como la meditación, los koans o las peregrinaciones.

4. La naturaleza

Este es uno de los temas más comunes en los haikus, así que se explica cómo les influye la belleza del paisaje, el ciclo de las estaciones, las flores de cerezo, los animales, etc.

5. Artes y cultura

Una visión rápida sobre otras artes tradicionales: la caligrafía, la pintura, los grabados, los jardines, la ceremonia del té, la música, la danza y el teatro.

 

En definitiva y como dije antes, un libro muy agradable para leer sin prisas, recreándose en sus imágenes y en los poemas.

Publicidad

¿...sólo 4?

Parchis vs Parchis92

Quizá los más mayores del público recuerden esto más vividamente que yo, porque a mí me pilló muy pequeña (aunque en aquellos tiempos la información viajaba lento) Pero.... ¿a que muchos de vosotros vivisteis el boom de los grupos infantiles?  Que si La Onda Vaselina, Regaliz, NINS, Popitos...  Pero sobre todos los demás, reinaban, muy por encima, los coloridos Parchís.

Recuerdo ir con mi padre (que estará leyendo esto, así que .. hola!) muchos sábados por la mañana a El  Molino  (mítica tienda yeclana de discos) a comprarme casettes de música infantil. Por alguna misteriosa razón, me encantaban. ¡Incluso creo que llegué a ser fan de La Onda Vaselina! De hecho, sin rebuscar más de dos minutos, he encontrado todos estos:

Casettes Infantiles

A la vista de esto, me ha surgido una duda existencial (aparte de la obvia "¿cómo podía gustarme esto de pequeña -a mí y a otros cientos de miles de  niños-?") : ¿La ficha verde es niño o niña?

Y entonces cometí el error del día: wikipediear. Y es que es lo que tiene la wikipedia, que empiezas buscando una duda concreta y te acabas empollando la historia entera de, en este caso, la banda Parchís.

La historia "oficial" del grupo abarca desde 1979 hasta 1985. Pero misteriosamente, yo nací en 1986, y podría decirse que en  mi infancia todavía eran famosos (o al menos famosillos).  ¿Explicación? Aprovechando el tironazo  del grupo, otra compañía discográfica montó otro grupo, con el mismo nombre y parecidísimo logo (Aunque para distinguirlos a veces cambiaban  "Parchís"  por "Parchís92")

"Wooho!" - me he dicho- "¡Yo tengo una cinta de los Parchís-Fake!". Y para comprobarlo, he alargado mi brazo apenas un metro hacia la estantería donde se almacenan CDs, cassettes y demás (ay, el pasado, tan cerca y a la vez tan lejos).

Efectivamente, allí estaban ellos por duplicado:  En la cinta de Seabert del 89 (crediteados como "Parchís") y en la de  "Canta Tu: Los éxitos de la tele"  de 1990 (como "Parchís92"). Os pongo una foto de la de Seabert, y de paso recordais como es un cassette. Parece una obviedad pero pronto habrá gente que no los haya visto nunca. De hecho, por ejemplo, mi hermano de 15 años nunca  ha visto un vinilo. ¡Un vinilo! Dioses...a dónde vamos a llegar...

Parchís Canta Seabert

Como curiosidad, en la wikipedia pone que "Sus nombres son desconocidos, y"PARCHIS 92", su album debut, es el único donde en la portada aparece una foto de ellos", pero... ¡no! Porque yo tengo uno que no es ese y sí que salen en portada xD

Como  curiosidad, me he fijado y en los Parchís originales las fichas verde y amarilla son chicas y el resto chicos... pero en los Parchís92 es justo al contrario. ¡Qué sutiles!

Parchís vs Parchís92

Por cierto, a nuestros amigos de las compañías discográficas todavía les quedaron ganas de sacar otros Parchís Fake Fake entre 1995 y 2000, esta vez en Argentina y Perú.

PD: (8) bam bam bam shubidu bam bam los pequeños picapiedra bam bam bam shubidu bam bam a su mundo nos acercan (8) ¡Me encantaba la cinta de los  Pequeños Picapiedra! Aunque me temo que no ha llegado viva hasta nuestros días, sólo la caja permanece entre nosotros.

PD2: Al rebuscar entre los casettes se ha removido polvo y ahora me estoy muriendo de alergia u_u

PD3: Por cierto, la ficha verde de Parchís es chica.

Diesel SFW XXX

Antes de empezar, una cosa: el hecho de que sea SFW no implica que a tu jefe le parezca bien que  veas estas cosas mientras trabajas.

Aclarado eso, sólo queda comentar que este video es una publicidad de la marca de ropa Diesel, a modo de parodia de las pelis porno ochenteras. El resultado les quedó bastante aceptable, y ante todo, muy simpático:

 



Por otro lado, mi productividad (y) en el mundo real sigue una recta tal que y=mx+n, con m>>0 (suponiendo x=tiempo), lo cual mantiene la maquinaria mental motil demasiado ocupada para forzarla con posts ingeniosos, así que tendré que tirar de marcadores de vez en  cuando (como ahora)

Modificación de los patrones de bits de los caracteres

[Capítulo anterior: Acceso a ROM para obtener los patrones de bits de los caracteres]

Hace unos días os conté cómo acceder a ROM (la BIOS de toda la vida) para coger los patrones de bits de los que están formados los caracteres que se escriben en la memoria de  video. Esto puede ser divertido, pero... también un poco estático, ¿no?

El experimento ganaría en posibilidades si pudiésemos modificar esos patrones para crearnos nuestras propias fuentes. Vale, sí, sería una cosa muy artesanal y a bajo nivel, bit a bit y todo eso, pero... ¿acaso teneis algo mejor que hacer?   xD

Yo no voy a crear aquí un juego de fuentes entero porque no estoy tan enferma (de momento), sino que me voy a conformar con ponerle una rayita encima a la letra A (sí, igualito que en el enunciado de la práctica 4 de Periféricos, soy poco original).

Así, de primeras, no  podemos  modificar los patrones de bits porque están en ROM, que como su propio nombre indica, es Read Only Memory. Así que el primer paso es copiar esa lista de 256 caracteres * 16 bytes/caracter de la ROM a la RAM. ¿Como? Creando una variable char* de ese tamaño (con malloc), y asignándole byte a byte el contenido de la variable (también char*) original que contiene la lista de patrones en la ROM (esto lo expliqué aquí)

Ahora, puedo añadir todas las modificaciones que desee, puesto que mi tablita ya está en memoría escribible. Como  dije, añadiré una rayita sobre la A. Puesto que la A es el carácter 65, avanzo hasta su posición. Los 8 siguientes bytes son cada una de las "filas" de pixeles de las que está formada la A, así que como quiero la rayita ENCIMA de la A  (en el primer byte), no necesito desplazarme "hacia abajo" (sumando entre 1 y 8 al desplazamiento de 256*16):

    *(listaRAM+65*16)=255;

255 es en hexadecimal lo que en binario viene siendo 11111111, o sea, en el idioma de los pixeles (xD) una línea.

Ahora que ya tenemos nuestra lista con la modificación, lo que queremos es decirle a la tarjeta dónde está el nuevo juego de carácteres, para que "olvide"   el viejo y use el nuestro (modificado). Esto tenemos que hacerlo con interrupciones en ensamblador, o sea que necesitareis un TurboAssembler o equivalente.

El código sería el siguiente:

    asm push ax;
    asm push bx;
    asm push cx;
    asm push dx;
    asm push es;
    asm push bp;
    asm mov ax, 1110h;
    asm mov bx, 1000h;
    asm mov cx, 0100h;
    asm mov dx, 0;
    asm les bp, listaRAM;
    asm int 10h;
    asm pop  bp;
    asm pop  es;
    asm pop  dx;
    asm pop  cx;
    asm pop  bx;
    asm pop  ax;

Ese cacho de código viene siendo una llamada a palo seco a una señora interrupción software. En primer lugar, guarda los  registros del procesador en la pila (push). Luego guarda en AX, BX, CX y DX los valores predeterminados para "decirle" a la interrupción qué es lo que quiere. Después, se llama a la interrupción  en  sí con  "int" (la interrupción 10h, con 1100 en  AX, que es esta), y finalmente devuelve a su sitio los registros del procesador (pop), para que pueda seguir su curso.  Y "asm" indica al compilador que lo que sigue es ensamblador, así que con  eso llama al TurboAssembler.

Tras compilar y linkar, ejecutamos, y esto es lo que obtenemos: Todos los caracteres "A" de la pantalla se convierten en "A con palito" (aka "A customizada") hasta que hacemos un cls.  ¿A que mola? ^^

Un par de fotos del "antes" y "después" de la operación:

Antes

Después

Por alguna  misteriosa razón, funciona perfectamente sobre DosBox,  no así con el símbolo de sistema (cmd). No me pregunteis por qué, pero llevo una semana volviéndome loca con esto, así que antes de moriros de asco... probadlo con DosBox xD (A mí la idea me la dio el profesor, porque hasta este momento había estado usando cmd) No he probado con otros emuladores, pero si alguien se ha aburrido y lo ha hecho, podría darnos feedback  :P

Pareidolia

Carl Sagan respecto a los canales de Marte, que Percival Lowell atribuía a vida marciana inteligente:

"No hay duda de que los canales marcianos tenían un origen inteligente, la única duda estaba en saber a qué lado del telescopio se encontraba la inteligencia"

Pareidolia, amigos míos, o lo que viene a ser lo mismo: cada uno cree ver lo que quiere ver. O quizá lo que su cerebro adiestrado quiere que vea.

The Prodigy - Invaders must die

 

Hoy va a ser un día largo, largo, largo. Como todos los martes, con doscientasmil horas de clase por la tarde. Por suerte está lloviendo, tengo una buena dosis de rencor en sangre, y esto en mi mp3. Me atrevería a predecir que hoy gano yo.

Las Películas del Mes: Febrero 09

Aquí están mis visionados de este mes. Son bastante escasos porque Febrero vino cargado de eventos sociales, viajes y demás, pero no me quejo ^^

Sábado 7: El desafío:  Frost contra Nixon (cine, con Peibol, Nonehxc y Ana)
Viernes 13: Traffic (casa Peibol, con Peibol)
Sábado 14: Germinal (casa Peibol, con Peibol)
Viernes 20: No es país para viejos (casa Peibol, con Peibol)
Sábado 21: Miedo y asco en Las Vegas (casa Peibol,  con Peibol)
Sábado 28: Control (casa Peibol, con Peibol)

 

Series:

Naruto Shippuden:

94: Una noche de lluvia
95: Los dos amuletos
96: El enemigo invisible
97: Laberinto de reflejos difusos

 

House (temp. 5):

6: Felicidad
7: El picor
8: Emancipación
9: Último recurso

 

Muchachada Nui (temp.3):
1: Cindy Lauper
2: Enrique Bumbury

TwittALC 27Feb

Segunda twittALC, y primera a la que puedo asistir (la anterior fue en agosto, y me pilló en Moncofa en el Foc&Sound viendo a Alec Empire y compañía)

Cenamos en el FrescCo muchas cosas verdes y sanotas. Al principio estaba super cortada porque aunque éramos unos 24, no conocía "in person" a nadie (salvo a Miki (@_miki)), pero enseguida conocí a Gemma (@gotasdelluvia) que estaba en mi misma situación jeje.  Y la gente que estaba a nuestro alrededor en la  mesa (@aliena, @_miki, @guiye, @smurfita, etc etc etc) era muy maja y lo pasé bastante bien ^^

@aliena, @motagirl2

Después, fuimos a algún misterioso y highlevel lugar de Alicante, no sabría decir dónde, pero era irlandés y tenía cerveza de verdad (Paulaner) y mesitas en la calle. Acampamos en la terracilla exterior porque hacía buena noche y no cabíamos dentro, mayormente xD

Allí estuve rodeada (y por tanto, socializando) con Gemma, Javier (@javierh), Damian (@dagandara), Miki y Ramón (@maeghith). Por cierto, este último me hizo unas orejillas gatunas de servilleta que eran requetemonas (ignorad el bonus de mi cara extraña):

Después del apalanque, algunos ya se descolgaron y se fueron a sus hogares/ciudades respectivos, mientras que otros nos fuimos por ahi de sitio en sitio  (tristemente, sólo recuerdo ir al Coscorrón a beber mojitos y que me entró un guiri xD)

@motagirl2 & @gotasdelluvia

@javierh, @dagandara, @_miki, @maeghith, @motagirl2

Aquí hay una laguna mental, pero recuerdo que después de salir de ahí (y spamear sus paredes), otra tanda de gente se marchó, y sólo quedamos el comando destroyer en pie: Gemma, Maeghith, Damián, Javier y yo.

@dagandara,  @gotasdelluvia, @javierh, @maeghith, @motagirl2

@maeghith, @javierh, @motagirl2, @gotasdelluvia

@maeghith, @javierh, @motagirl2, @gotasdelluvia, @dagandara

Fuimos de sitio en sitio hasta que magicamente sobre las 5.00 llegamos a la  Explanada y nos dimos cuenta de que no sabíamos por qué habíamos  ido allí xD

@motagirl2, @gotasdelluvia, @javierh, @dagandara

Eso fue la señal de que era la hora de volver a los hogares.Así que nos fuimos  todos en amor  y compañía a encontrar el coche de Maeghith, que nos repartió amablemente por nuestros respectivos hogares. Al mío llegué sobre las... 6.00? No tengo ni idea, pero tuve que despertar a Peibol para que me dejara taparme con mi porcentaje correspondiente de sábanas y mantas. ¡Siempre igual!  Y recordad chicos,  San Vicente no es San Juan, y la Universidad está en San Vicente xD

En resumen: genial y épica a partes iguales, habrá que repetir. Y si alguien encuentra mi voz por ahí tirada en un rincón, que me mande un mail, gracias xD

Y el que quiera tragarse todo el pack de fotos, están visibles aquí.

Frases que nunca dije, cap. 1

Daría 6 pociones de maná y mi Armadura Plateada por poder pasar la noche contigo

¿No os pasa nunca que pensais una frase, generalmente bizarra, y os preguntais "¿Pero dios mío, ¿realmente he pensado esto? ¿Lo habré dicho en voz alta? Observaré a la gente que me rodea para comprobarlo. (...) Ufff, menos mal, parece que no salió de mi cabeza" ? Pues yo sí, y creo que la frase de arriba es un buen ejemplo de ello xD

En fin, era sólo una amigable excusa para comentar que cuando termine de despertarme, y el resto de la gente de subir sus fotos, haré un post conmemorativo de la jodidamente ÉPICA twittALC de ayer. El material audiovisual que generé fue bastante escaso (había otras 15 cámaras, así que no saqué  la mía mucho), pero podeis ver las 9 fotos y 4 vídeos de los que consta en el set de flickr que creé para la ocasión.

Acceso a ROM para obtener los patrones de bits de los caracteres

¡Ay qué bonicas son las prácticas de  Periféricos cuando comienzan a funcionar!

Ya os comenté el otro día cómo acceder a memoria de video y juguetear con ella, y el tema de hoy está bastante relacionado con ello (siempre basado en TurboC sobre MS-DOS, si usais otros compiñadores compiladores y no tira... no es mi culpa :P)

Bueno, resulta que cuando escribimos un  carácter en la memoria de video, por ejemplo, la ’M’ de motagirl, no estamos escribiendo en realidad esa M, sino un  77, que es su código ASCII  (podeis consultarlos todos aqui).

En realidad, para lo que sirve ese  77 es para indexar una tabla presente en la BIOS, donde se encuentra  un patrón de bits para cada carácter (1 indica pixel relleno, 0 indica pixel vacío). La tabla tiene 256 carácteres,y cada carácter consta de 16bytes, siendo la M tal que así:

00000000
00000000
01100011
01110111
01111111
01111111
01101011
01100011
01100011
01100011
01100011
01100011
00000000
00000000
00000000
00000000

(Si os alejais un poco se ve algo mejor)

¿Y cómo  podemos acceder a la tabla? La dirección nos la puede dar una función de la BIOS. Para invocarla,  es  necesario poner unos determinados códigos en los registros de la CPU (ax: 0x1130, bx: 0x0600), llamamos  a la función usando una interrupción software (para la Bios de video, la 0x10) y esta amablemente nos dejará los valores deseados en otros registros de la CPU (es:  segmento, bp: offset).  Para ello, creamos  una estructura de tipo REGPACK, a la que llamaremos rp y que actuará como  pseudoregistros (y que no se nos olvide el #include del dos.h :P) :

struct REGPACK rp;
rp.r_ax=0x1130;
rp.r_bx=0x0600;
intr(0x10,&rp);

Y esto nos dará , como dije  antes, la dirección de la tabla de patrones de bits de los caracteres, con el segmento en ES y el offset en BP.

Ahora sólo necesitamos montarnos nuestro punterillo a dicha dirección:

char* lista = (char *)MK_FP(rp.r_es,rp.r_bp);

Y ya tenemos nuestro puntero mágico apuntando al inicio de la tabla.¿Y para acceder a una posición concreta? Bueno, supongamos que quiero ir a la letra M, a la que, como  dije antes,  corresponde el código 77. Pues simplemente tendría que "saltar" los 76 caracteres anteriores,  a 16 bytes cada uno. Podría hacerlo  así:

lista = (lista+77*16);

Con eso estaría apuntando al inicio  de los 16*8 bits de los que consta el patrón de la M. (Nótese que estamos usando un puntero a char, es decir, que cada vez que avancemos  una posicion (por ejemplo, lista= lista+1) estaremos avanzando 8bits)¿Y cómo "pinto" el patrón de bits? Esto ya es más chispeante ^^

Necesitamos crearnos una bonita función o equivalente que devuelva un determinado bit (0 o 1) de un char (1byte, 8bits). Un ejemplo  de cómo hacerlo podría ser esto:

(*p & (1<>n;

que devuelve el enésimo (n) bit de un char* p, usándo máscaras y desplazamientos.

Entonces, para obtener (por pantalla,o a un archivo) el patrón de bits, simplemente debemos apuntar a la letra deseada (lista = (lista+77*16);), y recorrer sus 16 filas mostrando  bit a bit las 8 columnas (las columnas en orden decreciente, por que si no sale como reflejado en un espejo). Dicho así queda un poco raro, pero en  realidad cada carácter no es más que un churro  de 16bytes que tenemos que sacar por pantalla en cachos de 8 en 8 bytes.

Si alguien tiene curiosidad, he subido un archivo con el volcado de todos los patrones aquí. (Hecho a base de un bucle de 256 (caracteres), otro anidado de 16 (filas) y otro más anidado , de 8 (columnas)) . Los primeros treintayalgún patrones no tienen mucho sentido porque son caracteres no imprimibles, las letras  ·de verdad"se ven más claras :)

En breve (aka cuando lo termine xD) colgaré otro post explicando cómo pasar esa tabla a RAM,  modificarla con  tus propios caracteres customizados,  y toquetear las interrupciones para que los patrones usados sean los tuyos y no los de la BIOS :)

[Siguiente capítulo: Modificación de los patrones de bits de los caracteres]