Tuesday 2 December 2008

Rather large spider



Every now and then we find what could generally be called WAKING FUCKING NIGHTMARES. Luckily, this once, I didn't.
My sisters did. No, actually, my sister's boyfriend's CAR did... and they heard the CRUNCHY sound from WITHIN the car... Yes.
They were kind enough to keep it for me... knowing about my love/hate feeling towards the scariest animals on earth. Of, course, they wouldn't just tell me... they had to stick it on a paper, fold it, as to render it invisible from the outside... and stick a SURPRISE GIFT sign on the outside.
Cute.
It didn't frighten me though... I somehow expected something SO WICKED when I was about to open it!
As you can see from the coin, it's pretty large. Spiders here ARE pretty large in general, I wish someone would have told me before I moved. And FAST. Trust me, spiders here are SCARILY fast.

Oh, for reference, that's a $1AR coin, which is larger (quite) than an american quarter. Sadly, the spider is no more, I only kept the pictures, but I can't quite see the eyes' form, so identifying it is quite difficult. Any help? It looks lycosidaeish, but that's just a wild guess. The eyes WOULD help A LOT...

Anyway... Cheers!

Glosario de palabras útiles...


Bueno, se me había ocurrido empezar algún glosario de términos que uso y por ahí no todos entiendan. Esto es porque rara vez entiendo lo que escribe la gente, así que acá vamos...


Gimpear: editar con el GIMP.

iWarpear: usar el efecto de deformado iWarp, del GIMP (se usa mucho para arreglar defectos).

Defenestrar: tirar por la ventana. No se si existe en realidad, pero en todo caso es una 'traducción probable' de la palabra inglesa 'defenestrate' que significa eso -y sí existe.

Ninja: yo.

Camwhore: contracción de 'camera' (cámara) y 'whore' (puta), es básicamente un término aplicable a chicas que se hacen las Keyras (todos saben quién es, ¿no?).

cerveza: 'producto' amarillo/ambar traslúcido de 'sabor rico,' con gas (tipo soda) y algo de acohol. Ejemplos: Quilmes, Budweiser, Brahma, Stella Artois [1].

Cerveza: una maravilla de la ciencia, ingeniería y de la magia también. Es el cielo embotellado. Ejemplos: Otro Mundo, Viejo Munich, Antares, Cardos.

café (instantáneo): 'producto' raro, de origen dudoso, que mágicamente se transforma en un líquido oscuro parecido al Café sin dejar sedimentos. Tiene un sabor indefinido.

Café: grano celestial, de propiedades mágicas y aroma alucinante, que se usa para preparar una infusión por diversos métodos: drip, expresso, turco, etc.

Drip: el peor método para Café... se caracteriza por la baja temperatura del agua y por el uso de un 'filtro,' generalmente en máquinas en las que el agua drippea en el filtro que tiene Café.

Drippear: caer, sólo aplícase a fluidos.

Papua Nueva Guinea: país exportador de Café.

Indonesia: país exportador de Café, volcanes, tsunamis y terremotos.

Puta: vos.

Porn-Hop: Trip-Hop con ritmo sexy. Esto lo inventé charlando con mi hermana, porque cada vez que escuchaba Massive Attack/Tricky se reía... decía que el ritmo le parecía de película porno sofcore, hence la palabra.

Hence: he ahí.

Nevertheless/Nonetheless: sin embargo, no obstante.

Sensemina=Ganja=Cannabis: planta mágica.

THC: compuesto químico que le da la 'magia' al Cannabis. O más bien, a la gente que lo fuma.

Mundodisco (Discworld): lugar en que 'viven' los idiotas que no entienden la razón ni la lógica del mundo de los cuerdos (como nosotros.) Y los que acaban de fumar Cannabis.

Automágico: contracción de automático+mágico. Dícese de aquello que funciona 'sin problemas' y 'nadie' sabe cómo ni por qué. Como la internet.

Sin problemas: mentira, esto no existe.

Nadie: poca gente.

Sushi: snack en japonés.

Nori: cosa con la que se envuelve el sushi. Tiene olor y gusto a pescado. No es pescado.

Sashimi: cosa que tiene olor y gusto a pescado crudo. Es pescado crudo.

Sake: meta.

Mecánica Cuántica: mina que labura en un taller y arregla cantidades... :S

Tarzanitis: enfermedad crónica que sufren algunas personas, y cuyo principal síntoma es siempre irse por las ramas.

Siempre: muchas veces.

Kernel: parte del 'sistema' que permite el uso de los 'recursos' de hardware... el cerebro, digamos.

Digamos: en realidad no.

Kernel panic: acción que resulta en una "pantalla de la muerte," y es causada por un 'falla fatal' de la cual el kernel no puede recuperarse... Para evitarlo, alejarse de las drogas pesadas y de los accidentes de tránsito. Y de los Teletubbies y MTV, y programas de Tinelli.

Multitask/Multitarea: que permite la ejecución concurrente de varios procesos.
Napoleon Bonaparte dictaba 4 speeches a la vez...

Speech: eso que una persona dice, generalmente ante miles de personas.. Lo pongo así porque no me acuerdo cómo se dice en español... :S Me parece que voy a tener que...

BabelFishear: DISCURSO! Ah, sí, esto es buscar algo en BabelFish. Speech=discurso.

Brasuca: puto.

rockPod: iPod que corre el sistema Rockbox[2] en lugar de la porquería de Apple que viene con el aparato -este iPod inferior se llama también fuckPod, shitPod, vergaPod, chotoPod, etc.

Freenix: contracción de Free (libre) y Unix. Básicamente todos los sistemas de la familia Unix que son libres: Linux, (Free/Net/Open)BSD y esos.

Linus: el Excelentísimo Emperador Pingüino.

rms: un gran hacker hippie, también conocido como St. IGNUcious.

root: aquel que tiene todos los permisos sobre todo en un entorno determinado. Dios (Allah/Jah/Yahwe) es root en el universo, ya que tiene permisos de escritura (creación), lectura (observación) y ejecución (esto es el obvio...) Yo soy root en mi depto...

Fuckintosh: Apple Macintosh.

[1] "La perfección tiene su precio..." NO ME HAGAN REIR!!!
[2] En el post anterior puse un dato errado, ahora lo corrijo: el Rockbox SÍ TIENE UN player de video... :D

Bueno, eso es todo por ahora, me despido.
CHAUUUUUUUUUUUUUU!

Wednesday 17 September 2008

The Matrix has you... Neo


Este siguiente algoritmo lo escribí para un trabajo en Pascal:

PROGRAM PrimeNumber;
USES crt; {esto lo pongo por si acaso... yo nunca lo usé}
VAR
x: Integer;
i: Integer;
limit: Real;
isPrime: Boolean;
BEGIN
Write ('Ingrese un número para averiguar si es primo: ');
ReadLn (x); {leemos el número}
limit:=sqrt(x); {elegimos el límite del ciclo: raíz² de x}
IF ((x mod 2)=0)
THEN isPrime:=False {si x es par, no es primo}
ELSE BEGIN {si x es impar, analizamos...}
i:=3; {comenzamos con el primer impar, i=3}
REPEAT
isPrime:=NOT((x mod i)=0); {x es primo si xłi}
i:=i+2 {pasamos al siguiente impar}
UNTIL (NOT(isPrime) OR (i>limit))
END; {finaliza el ciclo: x|i ó i>x^(1/2)}
IF isPrime
THEN WriteLn ('El número ingresado es ¡primo!')
ELSE WriteLn ('El número ingresado ¡no es primo!')
END.

# Nota: esto lo 'releaso' sin licencia, pueden hacer lo que les cante con eso... aunque 5 minutos (+2 de optimización) de código no puede servirles de mucho...


Este programita averigua si el número X es primo. Nada más. No informa sobre la cantidad de factores ni nada (tengo otro que sí lo hace, y es ultra copeishon!!!)

Cuando nos dieron este trabajo, el primer flaco que se mandó al pizarrón a escribir el algoritmo ─después de 3 segundos de reflexión─, se mandó una solución buena, pero no óptima: funcionaba, pero el ciclo de división calculaba por cada número desde 2 hasta X-1. Horriblemente ineficiente.
Entonces alguien ─probablemente yo─ dijo: mejor si sólo calculamos hasta la mitad de X, ya que obviamente X no puede dividirse por un número mayor que su mitad ─el resultado de tal división daría un número mayor que 1 y menor que 2 (rango de reales no enteros). Y la cosa mejoró, pero aún faltaba.
El chiste, como ya es obvio a esta altura (1.80), es la raíz cuadrada de un número. Porque los divisores mayores a esa raíz complementan a los divisores menores ─y fíjense que evité la palabra FACTOR acá.

Explico: si tomamos 36, vemos que su raíz cuadrada es 6. Esto significa que sus divisores menores que 6 (2, 3, 4) complementan a los mayores (18, 12, 9), ya que 2×18=3×12=4×9=36. Fácil. No hace falta decir que 6 se complementa con 6... ¿no?
Y como 18, 12, 9 y 4 son números compuestos, vemos que todos los factores de 36 (2 y 3) son menores que su raíz: 2<3<6 (2²3²=36.)

La idea de mejorar el algoritmo de esta manera me vino pelotudeando con integrales de ecuaciones cuadráticas (unos días después de esa clase.) Más allá de que en la clase un profesor dijo: "pero no tiene sentido dividir por números no primos, como 9 o 15, es mejor dividir sólo por primos!" ¡Pero che! ¡Pensá un poquito, grone! Una lista de CASES por cada número primo que se me ocurra hasta quichicientos es IMPOSIBLE, y el programa resultado tendría 400.000.000 de líneas de código. Además, el VERDADERO cálculo lo estaría haciendo yo, no el procesador.
Me importa poco lo que diga, porque yo ya probé el binario mil veces (corroborado con el que sí devuelve divisores), y calcular la primacidad ─¿así se dice?─ de un número mayor a 4 mil millones demora 2 de milésimas de segundo con este programa... ¡NO ME JODÁS LAS PELOTAS!

PS: Yo nunca soy de escribir primero en pseudocódigo y después pasarlo a Pascal. De hecho, en el proyecto (que nos obligaron a documentar y a mostrar el algoritmo no-Pascal) lo hice al revés: primero escribí el código en Pascal, depués hice las pruebas, y después lo pasé a pseudo... ¡¡sí, soy un trucho!!!

Bueno, me despido... se me ocurrió subir eso... porque quería escribir sobre la opinión de Steve Ballmer (CEO de Microsoft) sobre "Linux es un virus" y explicar por qué no está 'del todo' errado... Pero debido a que necesitaba más información sobre las licencias del tipo BSD decidí investigar un poco y dejarlo para otra vez... Entonces abrí la carpeta de trabajos en Pas, y me acordé del del primo (los matemáticos me resultan especialmente curiosos) y dije... WHY THE FUCK NOT? Nah... no lo dije, pero casi seguro que lo pensé...

Bueno, me te tomo el palo, saludos!
CHAU!

PS2: Si se les ocurra alguna manera de optimizarlo más, avisen.
PS3: No me refiero a optimizar como "mejor hacelo en C++ o en FORTRAN, NABO!"...
PS4: Aviso que PS acá no significa PlayStation... pero viendo tanto PSx me pareció necesario aclararlo...