Euskaltel caput y a ostias con el switch

Sep
05

Esto que no me va Euskaltel... desde ayer.

O eso deduzco, viendo que de los 600GB que había puesto a descargar, solo se han bajado 100GB, y sabiendo que lo puse a las 15:06, y que bajaba a cosa de 46Mbps, o lo que son 20GB/hora, pues como que la conexión debió desaparecer a eso de las 20:00 de ayer.

Y sigue sin ir... ping www.google.com, nada. Así que... cambio la ruta a Vodafone, me voy a la web de Euskaltel... y me pide que cambie la contraseña, que la que tengo es demasiado vieja. Manía de expirar contraseñas.
La cambio, miro que está todo contratado como es debido, ningún aviso de impago, ningún servicio dado de baja por arte de magia... ping www.google.com, nada. Desde el PC de al lado, nada. Desde el router, nada. ping 8.8.8.8, nada. Config del modem... dice que está conectado, acceso a la red permitido, ningún error sospechoso. arping desde el router al gateway, parece que responde bien... pero no deja pasar.
Por si las moscas, reinicio el router. Nada. Reinicio el modem. Lo mismo. El PC no necesito reiniciarlo para saber que está bien (si llega al router... y tal).

Pues me voy a desayunar.
Vuelvo... nada, sigue sin ir.

Por si acaso, miro otra vez la web de Euskaltel... y saca un error como un pino nada más logearme: "página no disponible en estos momentos". Vamos mal.
Pero bueno, la vida continua, a lo mejor ya se arreglará... ¡bendita segunda conexión! Si no, siempre quedaría el móvil, para pasar el rato... pero mejor no.

Aunque me queda la mosca detrás de la oreja... ¿ya lo habré reiniciado todo "bien", en orden y tal?... no debería influir, peeeeroooo...
Bueno, va. Apago el modem, apago el router, noto que el switch zumba, le meto una ostia... deja de zumbar (hm), apago el router wifi, me voy a mear, vuelvo, el switch zumba otro poco, le meto otra ostia... sí, ya no zumba... y las luces siguen encendidas (bien!), enciendo el modem, enciendo el router, enciendo el router wifi... ¡¡y parece que todo funciona!!

Ahora, lo que no sé es el por qué:
- ¿Ha sido casualidad?
- ¿Ha influido el reiniciar las cosas todas, todas, todas y luego encenderlas en orden?
- ¿Tengo las ferritas del switch hechas unos zorros?... esto parece que sí, pero, ¿influye?

ACTUALIZACIÓN: Parece que la web de Euskaltel también ha vuelto justo ahora. Mira tú por dónde, parece que ha sido casualidad :)

Posted By admin read more

Leela's wristie thingie

Aug
24

We all know having a portable screen clasped onto your arm is the best thing to... hm... dunno, but hey, it's 3013, so whatever. One question remains though: how many prongs does the thingie use to clasp on one cute mutant's arm?

According to episode 7x22, Leela and the Genestalk, it seems to be four. But wait, is it?

Seems like they change configuration, don't they?

So either there are like 8 prongs, that somehow extend and retreat who knows when or why... or you know, continuity error!

Posted By admin read more

Cómo enviar una bomba limpiadora por SEUR

Dec
14

Se me ha ocurrido hacer un pedido de "aire comprimido" para limpiar componentes del ordenador en PcComponentes, y esto es lo que he recibido:

Cierto es que en el anuncio pone "Spray Limpia Polvo", pero no menos cierto es que pone "Aire Comprimido"... y, que yo sepa, el "aire" no es "Extremadamente inflamable", ni siquiera bajo presión. Ni hace falta "usar en lugares bien ventilados". Ni mucho menos "contiene propano y butano" (detalle que amablemente olvidan mencionar tanto en la web de la tienda como en la del fabricante).

Ya la guinda del pastel es embalarlo con unos plásticos, tiras de cartón, ¡y un mechero de regalo!

Es como si quisiesen decirme que la mejor forma de limpiar componentes, es prendiéndoles fuego xD

Posted By admin read more

NGram distribution graphs

Nov
30

So there I was, pondering the deepest meaning of XKCD 1140, and it's cryptic, curiosity-prodding hidden text:

In months other than September, the 11th is mentioned substantially less often than any other date. It's been that way since long before 9/11 and I have no idea why.

Why would that be? Is it even true? May it be some effect introduced in data processing? Maybe the writer made some mistake. Or is it that OCR, as applied to books, has a real hard time distinguishing "11" from "II", from "1!"... from whatever else? Whatever the reason, the logical next step would be to go to the sources: get the data, and start tinkering.

That's when I was presented with the corpora download page. I did know about the n-gram viewer, quite an useful tool when you're aiming at improving your AdWords effectiveness, but this was like... What-The-Frack!

"Ok, don't panic", those seem like a lot of files, but, how much do they actually weight? What's the actual size? After downloading a "tiny random sample" for "May 11th" (sure, it also has March), which clocked in at roughly 2GB... times over 700... holy moly! that would be about 1.5TB. But wait! Then I got to zd, and it was like 800KB. Right... so they are not partitioned in 2GB chunks. Phew!

Anyways, there must be a better way to find this dataset, to work with it... and there is! If you get an Amazon instance on us-east-1, you can work directly, at no extra charge, with this cool Google Books Ngrams dataset, where you can find some interesting facts about the aggregate sizes and counts for ngram-language tuples (losing the year and the ngram frequency count).

Only thing is, I don't actually have any instances at us-east-1. While staring idly at the page, wondering whether to set up some instance, what to put on it, how to better use the instance time, I came to realize there was something odd with the size and count data I was looking at. English language had more 3 and 4 gram rows than 1, which accounts for combinatory probability... but then dropped on the 5 gram count, which probably was due to the excessive complexity of joining 5 different words in a sequence. But in other languages this drop occurred at different points!

Thus, British English seems to have a slightly eariler drop in complexity than general English, but Hebrew has a drop as early as the 2 gram row count! Weird... need to do some calculations.

Cool, ain't it?

So Hebrew has a freaking early drop in complexity at the 2 gram level, Chinese and Spanish are almost identical (whaat?), while germans just love their 3-word tuples. Now I wonder if these graphs keep constant over time, or rather change and flow. Are they an inherent property of each language? Or do they change with style, education, culture, printing techniques? Could you detect which text a language is in, just by looking at the tuple distibution? Well, that's silly... but maybe the dialect, or the year or epoch, or style it was written in?

So many questions. Need to do some calculations... hey, maybe I'll find some use for that Amazon instance after all!

Posted By admin read more

Keyboard, our petri dish

Nov
28

When your keyboard gets to look sticky, it's either time to clean it, or throw it away. Since I am not so much the throwing away type, and otherwise my Logitech G19 works pretty well, cleaning it is. And the difference... is almost palpable.

Here we have a before-and-after shot, with a 6 month worth of grim encrusted on the upper half, and a freshly cleaned out couple of rows on the bottom. If your keyboard looks more like the top part rather than the bottom, it may be time to get cleaning too.

Posted By admin read more

Windows 8 Store, Google on the Top

Nov
02

So Windows 8 has been released to the masses. So I got my Windows 7 upgraded to Windows 8. And I ventured into the abyss of the Windows Store, just to be presented with this funny view:

Yay Google Search! You're the best.

Also, that cacophony of colors, useless icons and almost illegible titles, is really funny. I can already predict how many Win8 Store apps I am going to install: about none.

Posted By admin read more

Zapp Brannigan's Signature

Jul
18

As seen towards the end of Futurama 7x05 episode Zapp Dingbat

¡We love you, Zapp!

Posted By jarfil read more

ShapeOko Cable Management Test #01

Jul
17

Preliminary cable management test for the Y axis motor cables:

Just a piece of thread, that's it.

The final version should rather be made of steel line, with some tiny pulleys or something. Or fishing line, that could work too, and probably turn out quite cheaper. Maybe not so resilient though... will have to test.

Posted By jarfil read more

Diablo III

May
15

Ha pasado una semana y pico tras la activación del "tan esperado" (por algunos incautos) último juego de Blizzard; Diablo III.

Lo primero

Iba a escribir algo el mismo día de la activación... pero me lo pensé mejor. Me di cuenta de que en realidad no tenía ni idea del juego en sí, solo había jugado unos pocos niveles... y parecía haber mucho más detrás. Por suerte hice bien en esperar, otros incautos se lanzaron a comentar chorradas por un tubo, y ahí queda para la posteridad

Al principio, como a muchos, me pareció un juego simplón de click-click de dos botones de ratón (moverse/atacar y ataque secundario) mas cinco acciones adicionales con el teclado, convirtiendo el juego entero en un mata-mata bastante chorra, con una historia lineal para que las mentes simples no tengan posibilidad de perderse.

En esta semana y pico, me he subido un personaje clase monje a nivel 55, un médico brujo a nivel 20, y los demás a nivel 10 para al menos ver de qué iban. Con el monje ahora mismo voy terminando el acto II de nivel Infierno, que ya hay que tomárselo con más calma. He visto y usado la casa de subastas, los artesanos, distintos vendedores, las opciones de personalización, logros, comercio e interacción con jugadores.

Y mi opinión ha cambiado un poco. No me terminan de gustar algunas cosas, me atraen juegos más complejos, pero hay que admitir que los creadores del juego han sabido construir mucha complejidad sobre una base muy simple. Lo que es muestra de un diseño muy bien pensado, con como mínimo muchas iteraciones.

Gráficos, Sonido y Arte

Lo primero que vemos de todo juego es... lo que vemos, valga la redundancia. Diablo III se basa en una vista estrictamente ortogonal, con unos mapas puramente 2D... aunque realizados a base de elementos 3D y con un motor de juego realmente 3D. En la práctica es una combinación curiosa; por ejemplo no se puede pasar por algunos sitios, pero sí se puede disparar proyectiles, lanzar objetos, destruir partes del escenario que caen "fuera del mapa", o los enemigos pueden entrar desde zonas a las que los personajes no pueden acceder pero les pueden atacar a distancia desde antes de que lleguen. También cuando un personaje muere a veces su cuerpo puede "salir despedido" fuera del mapa (por ejemplo despeñándose por un precipicio).

Los efectos especiales de las acciones son bastante espectaculares, aunque se nota que los diseñadores han tenido que hallar un compromiso entre la vistosidad y la obstrucción del espacio visual. Aún así, a veces la pantalla se llena de colorines de efectos que uno al final no sabe de quién es cuál cosa.

Tanto los sonidos que acompañan a las acciones, como a los enemigos, como las lecturas en voz alta de los elementos de historia están bien cuidados. La música normalmente está en segundo plano, de forma que se puede distinguir las acciones por los sonidos que les acompañan... salvo en algunos jefes concretos donde se usa la música para añadir dramatismo, de forma acertada y acorde a la historia.

Los escenarios están muy bien trabajados a nivel gráfico, con un estilo que parece al mismo tiempo dibujado y 3D, una mezcla realmente agradable

Historia, Misiones y Enemigos

Qué se puede decir... es uno de los puntos débiles. Aunque está bien desarrollada, es simplona, épica, lineal, bastante chorra y previsible. No muy diferente de sentarse a ver una película cualquiera.

La capacidad de decisión del jugador brilla por su ausencia. Toda complicación estriba en decidir si ir a derecha o izquierda para encontrar la salida de un mapa -desconocido y generado aleatoriamente por el servidor, pero con patrones comunes-, y si investigar todos los recovecos para encontrarse más enemigos y recompensas, o por el contrario ir corriendo hacia la salida nada más encontrarla.

Quizá lo que salve un poco la situación es que los enemigos secundarios -los que no están directamente relacionados con la trama principal- también se deciden de forma aleatoria, por lo que al entrar en un recinto uno no siempre sabe por dónde ir, ni qué se va a encontrar detrás de cada esquina. Cada vez que iniciamos una nueva partida, aunque sea en el mismo punto, el servidor genera un mapa y unos enemigos diferentes que nos tocará explorar. Y en función de lo que nos toque, un nivel puede pasar de ser difícil a rematadamente endemoniado, al menos en niveles de dificultad altos.

Niveles de dificultad

La mayor cagada de Diablo III, y con razón bastante criticada, es la imposibilidad de elegir un nivel de dificultad superior a los ya superados, y una completa falta de explicaciones de antemano sobre cómo funciona realmente el sistema de niveles

  1. Dificultad Normal: que más que "Normal" debería llamarse para bebés. Es el nivel inicial en el que empiezan todos los personajes con nivel 1, en pelotas, sin equipo, sin habilidades, y en el que se empieza matando a base de hacer click sobre los enemigos. Una completa estupidez
  2. Dificultad Pesadilla: aquí es donde empieza el juego de verdad. Tras pasarse el juego entero (¡¡sí, entero!!) en nivel "Normal", con lo que se llega a tener un personaje al nivel 30 o así, se puede volver a pasar desde el principio en nivel "Pesadilla". ¿He dicho "volver a pasar"...? Pues no, en realidad el juego cambia totalmente; no es que los enemigos sean más duros, sino que son diferentes, tienen más habilidades, se comportan de otra forma, son más, etc. Apenas nada que ver con el modo "Normal".
  3. Dificultad Infierno: es donde las cosas empiezan a ponerse difíciles. Si en "Pesadilla" te podías pasar las cosas con algo de habilidad y eligiendo un poco bien las cosas, en "Infierno" te puedes encontrar con que donde en "Normal" solo había un par de zombies andando, ahora hay un élite con secuaces inmunes que reflejan el daño, invocan "torretas" de rayos arcanos, dejan manchas de fuego por el suelo, pasan volando gárgolas que bombardean la zona... y todo metido en un pequeño sótano sin apenas espacio para maniobrar. Vamos, que ya puedes tener tus habilidades bien aprendidas y elegidas (no basta con "la más alta", eso no sirve de nada), tu equipo bien configurado... e ir bien acompañado. O tus tripas dibujarán una larga estela por las paredes de ese sótano maldito del demonio. Y aún así, a veces hay que salir por patas.
  4. Dificultad Averno: ...ni idea, y la verdad, me acojona solo pensarlo. Pero visto lo visto, supongo que tarde o temprano veré qué tal es :D

Habilidades

Es una pena lo simplificado que está el juego en cuanto a elección de habilidades: solo 6 + poción de vida. Para alguien acostumbrado a "volar" por el WoW con un Logitech G13, es irrisorio. ¿6 habilidades? Anda no me jodas. Por suerte, hay algo más de lo que se ve a simple vista... aunque tampoco demasiado.

Las habilidades están divididas en 6 clases, dentro de cada cual hay 3 o 4 habilidades, con lo que en total no son 6, sino -por ejemplo en el monje- 21 habilidades diferentes. 6 son las acciones diferentes que se pueden elegir para un combate, una forma de "construir" el personaje. Más aún, cada habilidad puede ser modificada por una de 5 runas, cambiando su funcionamiento, con lo que en realidad son 21*6 = 126 habilidades diferentes

Por defecto, el juego viene configurado para asignar una habilidad de una clase (modificada o no por una runa) a un botón de acción... pero esto se puede cambiar (Options -> Gameplay -> Elective Mode), permitiendo asignar cualquier habilidad a cualquier acción.

Por lo tanto, podemos asignar una de 21 habilidades, modificada por una de 5 runas (seamos sinceros, las habilidades sin runa no se usan), a uno de 6 botones de acción que usará el personaje durante cada combate... aunque también se pueden cambiar durante el combate, pero en ese caso incurriendo en un retardo hasta que la nueva habilidad se active.

Objetos, Inventario, Loot y Alijo

Artesanos y Vendedores

Subastas

La Gran Cagada

Llamar "Normal" al nivel mínimo de dificultad, cuando se pasa con solo unos pocos clicks de ratón, no sé si llamarlo del género tonto o qué. Es lo que ha propiciado que mucha gente se "pasase" el juego, llegase al nivel 30, y dijese "¿ya? ¿eso era?... pues menuda mierda". Y con razón. Porque el nivel "Normal", es una mierda, se puede pasar en solitario sin apenas ayuda de los acompañantes, sin apenas equipo, sin apenas saber usar las habilidades, sin apenas nada de nada. Y vas y ves toda la historia, y matas al malo maloso de final del todo... pos vaya, qué decepción, "yo me esperaba más". Muchos ni se plantearán jugar a niveles de dificultad superiores, total "para qué"... si pueden suponer que solo tendrán más aguante los bichos, no que sean diferentes o tengan otros comportamientos (nada del juego lo indica).

Otra cagada es no permitir seleccionar el nivel de dificultad en modo solitario hasta pasarse los inferiores. ¿Que un jugador nivel 1, totalmente en pelotas y sin nada de equipo, quiere probar suerte contra el nivel Averno? ¡Pues venga, adelante! No pasará ni de la primera pantalla, pero al menos verá a qué es lo que puede esperar llegar. Nada de "vayamos pasito a pasito, no se nos vaya a frustrar el niño". Que es un juego para mayores de 18 años 16 años, seamos mínimamente consecuentes por favor.

Posted By jarfil read more

Idea: Cabezal 5DOF para CNC Shapeoko

Apr
15

Desde hace años le tengo echado el ojo a las impresoras 3D, pero no he terminado de animarme a construir una. Otra cosa es poder mover un cabezal palante, patrás, pa los lados, arriba y abajo... eso sí que mola. Pero una impresora 3D... no tanto:

  • Entre que las cosas que imprimen son bastante pequeñas
  • que la resolución de bastantes modelos dejaba bastante que desear
  • que las realmente buenas son caras de cojones
  • que imprimen con un solo material
  • que el PLA es caquita que se funde a los 60ºC, y el ABS tampoco va mucho más allá, 120ºC
  • que si dicen que las cosas son bastante frágiles
  • que la verdad... no terminaba de ocurrírseme qué imprimir con estas limitaciones
  • porque paso de imprimir cabezas de yoda y chorradas similares
  • ademas el filamento de plástico es una guarrada pensada para reparaciones, cara y cutre... pellets de ABS sería otra cosa, pero todavía parece que no.

Por otro lado, una impresora 3D se mueve en X-Y-Z, lo único que tiene un cabezal que además se calienta (o no) y escupe plástico (o no). O sea, que cambiándole el cabezal y poniendo una Dremel, tenemos la fresadora CNC. O viceversa, si se tercia algún día.

De ahí que al ver que salía a la venta la Shapeoko, me lancé a por ella. A por el kit de "palante, patrás, pa los lados, arriba y abajo" o sea, que Dremel ya tengo, Arduino también algún que otro, y lo demás... bueno, lo demás se pide, que tampoco es el fin del mundo. O podía pasar de pedir nada y hacer las cosas desde cero, pero la verdad que las MakerSlide molan, parece una solución ligera y simple. Limpia, que diría uno. Así que venga, una pal bote, ahora solo queda lo demás.

Y con "lo demás" me refiero a motores paso a paso, controladores de los mismos, fuente de alimentación, la dremel, el soft, conectarlo todo y que quede bonito... y un par de cosas más que en la Shapeoko, tal como está, me parecen una soberana guarrada:

  • Aspiración de polvo. Porque vamos, dejar la máquina, el PC de al lado, media mesa y todo, guarro de virutas de plástico o metal, como que no no.
  • Protecciones laterales. Para que no salten las susodichas virutas de las narices por todos lados, y de paso protecciones para la electrónica y demás.

Pero ya puestos a añadir, se me ha ocurrido que, molaría una cosa más: poder usar discos de corte y pulir. ¿Es una dremel, o no es una dremel? Pos eso, que aprovechemos todas las puntas de la dremel, con el beneficio de tenerlo todo controlado desde el PC, automático y repetible hasta aburrir, ¿no?

Y aquí viene la duda... cómo montarlo.

Lo que se me ocurre es que el disco de corte tiene que estar en perpendicular a la superficie de corte, o sea que el eje en paralelo, o sea que... la hemos cagado, 90º respecto a como está para la fresadora. Y si está en paralelo, ¿en qué dirección? Por narices hay que poder girarlo pa un lado o pa otro. 360º molaría, pero ya de entrada supongo que no va a ser, así que al menos 180º. Que pensándolo bien, si en vez de la dremel pongo el cable alargador de eje de la dremel, el cable tiene que pasar por algún lado, y no tengo nada claro de que sea tan flexible como para pasar por debajo del eje transversal si el cabezal está girado para cortar por delante.

Aunque si el servo hiciese suficiente fuerza... y este es el dilema que tengo ahora, ¿¿qué servos elegir?? A primera vista molan los Dynamixel, con eso de que si par de torsión ajustable, y feedback de consumo, temperatura, posición y demás. Con un soft que lo tenga en cuenta (que sí, que habrá que hacer el soft, lo tengo asumido), molaría mazo usarlo para ajustar de manera fina las cosas. Además, en el caso de pulido, no apretar demasiado podría ser una gran idea, aunque para eso tal vez fuesen mejor un par de muelles con unos servos de estos de juguete (léase: chinos, léase: de DealExtreme) por ahí al lado en alguna parte de forma que ajustasen la presión cuando el Dynamixel estuviese a bajo par de torsión.

¿Qué? ¿Que eso son más grados de libertad...? Bueno, pse, me da igual, mola y punto.

El tema es cuál Dynamixel elegir, si el AX-12 de 16Kg*cm, parece que de plástico y algo menos de 70rpm por 45€, o pegar el salto a los RX con un RX-28 con 38Kg*cm y en metal pero por 200€, o algo intermedio como el RX-24F con 26Kg*cm en metal y 145€... o, de nuevo algo más nuevo, con más resolución y un encoder sin contacto como el MX-28 de 200€. ¿O tal vez mandarlos todos al carajo y buscar otra solución? Porque la verdad sea dicha, no me atrae un pelo dejarme ese pastón solo para el cabezal, y encima en caso de reparación tener que volver a lo mismo. Pero claro, son "todo en uno", y eso viene muy bien, aunque tal vez se pudiese hacer algo más adaptado con unos NEMA17, que por 15€ la unidad son bastante atractivos, aunque no sus apenas 5Kg*cm de par de torsión... en fin, dilemas.

Luego lo siguiente sería añadirle cámara de infrarrojos para ver las zonas calientes del material (vendría de primera para no sobrecalentar el plástico al pulirlo... aunque a ver cómo limpiar la cámara, ¿con un soplador? ¿añadir un soplador al cabezal de corte? tubitos con aire a presión, que tampoco haría falta mucha presión, y tal vez un servo enano con un wiper para un protector de la cámara), tal vez alguna cámara normal para calibrado y/o control de precisión de los cortes, alguna forma de control de las posiciones de los ejes (lasers, me sobran lasers cutres enanos, solo a ver cómo usarlos para medir distancias con precisión), lo guapo sería un sistema de intercambio automatizado de puntas de corte, y ya no digamos integrar un aplicador de capas de pintura o protección... y obviamente, en un futuro, cabezal(es) de impresión 3D, a poder ser pequeñitos, para más de un material a la vez y reciclable.

Y lo bonito de la Shapeoko es que es un marco con agujero debajo, que igual se le puede poner un trozo de agolmerado para atravesar a gusto, que unas patitas y elevarlo, que... ¿qué tal unos NEMA17 para poder elevarlo entero como si de una plataforma se tratara? ¿Y si la bandeja fuese móvil y se pudiese desplazar a, digamos, una estación al lado de pintura o algo? Ideas, muchas ideas. Luego habría que ver cómo volver a posicionarlo debajo del cabezal, ahí entrarían las cámaras. O como la idea de poner una base con sujeción de vacío, aunque son bastante tocapelotas con eso de que si placa principal con sello, placa de pieza específica con sello... y para unas pocas piezas va a ser como que no (vamos, ni de palo)... aunque un brazo robótico de estos cutrecillos sí que podría asomar por encima del borde para sujetar algún trozo de pieza que estuviese a punto de salir volando. O para levantarlo, por imán o por succión o algo, y sacarlo de la zona de trabajo para que no estorbe (ni se lo cargue el cabezal al volver a pasar por encima). Al menos le daría una nueva vida al juguete-experimento que monté en su día y que está esperando un mejor uso que adornar la estantería.

Otra idea que me anda rondando la cabeza, es aumentar la resolución con una plataforma stewart, aunque habría que ver qué resoluciones se podrían conseguir con qué tipo de servos, o si harían falta actuadores lineales más precisos para conseguir un resultado razonable. Aunque seguiría sin poder girar 90º el eje de la dremel, sí que como mucho quedaría como algo secundario, posiblemente para colocar como plataforma alternativa, o sub-plataforma o algo.

PD: A todo eso, quien dijo Dremel, dijo Mannesman, que está a 45€ y si se quema porque la dejo demasiado rato, pos bueno, pos vale. Ya pensaré en cómo solucionarlo si eso. Que de todas formas me gustaría desmontarla para conectar el selector de velocidad al Arduino. Y ya puesto molaría un sensor de velocidad en el eje para tener un mejor ajuste por feedback (¿un display de energía vertida? eso también molaría, incluso para usarlo a mano, sin CNC)

Posted By jarfil read more

Pages

Subscribe to Jarfil's Blog RSS