field and a road




field and a road


Originally uploaded by dsevilla.



olivos




olivos


Originally uploaded by dsevilla.



Problemas con los comentarios

Parece que últimamente no se podía introducir comentarios en el blog dependiendo de qué browser se usaba. Esto estaba causado por un error que cometí al añadir ciertas cosas al blog... Perdonad. Ya lo he solucionado. Al final no tenía nada que ver con el plugin wp-morph.

Cuando Google llama a tu puerta

Hace tiempo que no escribo nada por aquí, salvo alguna foto. No sé a qué se debe exactamente. Quizá a que tengo que hacer tantas cosas que escribir aquí me parece una pérdida de tiempo.

Sin embargo, están pasando muchas cosas en mi vida, bastante importantes, y quiero escribir alguna de ellas. Por ejemplo, como el título indica, Google me ha llamado porque están montando un centro de investigación en Zúrich. Esto sucedió hace unos meses. Hablaron conmigo, les envié el currículum y no supe nada más hasta hace poco. Pensé que mi currículum no era ninguna cosa del otro mundo y que se habían olvidado del tema, ya que tendrían cien mil solicitudes mejor que la mía.

Hace poco recibí una llamada al móvil de la que no entendí una palabra al principio. Decía algo así como "Hi sfdsfaisodfsifd sfsf Google UK". Cuando entendí esto último y logré cambiar el chip a inglés... por fin pude entender lo que me decía. Según parece, la que habló conmigo en primera instancia ya no estaba en Google y por eso se habían retrasado en llamarme.

En fin, que concertaron una entrevista con alguien de Google Zurich. Me explicaron que Google es una empresa guiada por el "Engineering", por lo que ellos mismos eran los que en última instancia decidían si contrataban o no. Por lo tanto, la entrevista sabía que iba a ser de corte tecnológico, con acertijos, etc.

Esta tarde me han llamado. Después de preguntarme cosas sobre el currículum (como en qué medida había participado en evolution y en Mono, si había escrito tests unitarios para mi código, en qué había consistido la revisión de código que había hecho, etc.) ha cambiado el tercio para hacerme preguntas de programación que tienen preparadas. Reproduzco más o menos en español lo más interesante del diálogo. En realidad ha sido en inglés: (G = Google, D = Diego):


[G] - Déjame que te pregunte una coas. Imagina que tienes una cadena de caracteres con palabras dentro y quieres ordenar las palabras en orden inverso. ¿Cómo lo harías?

[D] - Eh... esto... Construiría una lista de palabras con un list<string>, iría introduciendo las palabras en ella y luego recorrería la lista de forma inversa escribiendo en la cadena original.

[G] - OK, ¿y qué complejidad tendría eso?

[D] - Sería O(n), porque se tienen que hacer un par de recorridos por la cadena de longitud n.

[G] - OK, ¿Y en cuanto a memoria?

[D] - Pues sería también de orden O(n+m), donde n es el número de caracteres de la cadena (duplicados en total, ya que la lista contiene los mismos caracteres en total) más m nodos de lista donde m es el número de palabras.

[G] - OK. ¿Y se te ocurre una manera de hacerla usando sólo la cadena original?

(Aquí, en vez de estar pensando en el algoritmo, yo sólo pensaba "¡Coño, esto tiene que ser fácil!" "Me cago en la leche" Y a la vez pensando en qué decirle al tipo en inglés para que no se aburriera)

[D] - Let me see... si invierto la cadena... no, eso no, porque blah blah...

(pienso un poco ... Después me he dado cuenta)

[D] - Ahh, OK, si invierto la cadena, luego puedo invertir cada palabra dentro de esa cadena, y ya está.

[G] - OK, sí, esa es la respuesta, ¿cuál es la complejidad, etc.?

...

(La siguiente pregunta era de otro algoritmo. En realidad ninguno de los dos eran muy complicados, pero sí que indican a ellos que tienes las herramientas necesarias)

[G] - OK, ahora otro problema diferente. Imagina que tienes una secuencia de números, y que te digo que busques si en la secuencia hay dos números tales que sumados me de otro número.

[D] - Yo le he dicho, para ir aclarando, por ejemplo, que tengo dos números dentro de la cadena, i y j, que al sumarlos dan k: i+j=k

[G] - Así es.

(piensa otro medio minuto)

[D] - OK, ordeno la secuencia y empiezo a recorrerla con dos índices. Uno al principio y otro al final. Avanzo el del final hacia el principio mientras el resultado del índice de la izquierda más el de la derecha sea mayor que k. Cuando llegue a uno que es menor que k, incremento el índice de la derecha, y así sucesivamente.

[G] - OK, ¿y qué orden tiene eso?

[D] - (aquí me he equivocado y le he dicho que ordenar era O(log2n), cuando en realidad es O(nlog2n). No importa, él me ha corregido). OK, sería O(log2n), porque el recorrido final es O(n).

[G] - O(n log2n)

[D] - Oh, sí, efectivamente, perdón.

[G] - ¿Y no se podría hacer más rápido?

[D] - (claro, he pensado "¡coño!" otra vez...) Se podría construir otro array, donde se apuntara de alguna manera el número necesario... no, espere... pero eso necesitaría de otro array, y antes me ha dicho que no utilizara mucha memoria

[G] - Sí, pero eso era para el de ahora. ¿Qué harías si puedes utilizar más memoria y otros arrays?

[D] - Si puedo utilizar bastante memoria, lo mejor sería un hash o un array de booleanos inverso si sé ma magnitud de los números (por ejemplo, de 1 a 1000 puedo construir un array de booleanos de 1000 elementos).

[G] - OK, y si usas hash, ¿qué función usarías?

[D] - Pues depende de la cantidad de memoria que quisiera utilizar. Eso define el tamaño del hash y el número de bits de la indización. Normalmente se utilizan funciones módulo N, donde N es el tamaño de los índices del hash, y también se pueden evitar colisiones y hacer algoritmos más eficientes con el direccionamiento abierto y el doble hashing, o incluso teniendo tablas precalculadas de hash como utiliza gperf, que siempre da O(1) al evitar las colisiones.

[G] - OK, muchas gracias. Creo que la entrevista está llegando a su fin... Si tienes alguna pregunta que hacerme...

[D] - Hombre, pues si puedo preguntarte, me gustaría que me comentaras qué te ha parecido la entrevista :)

[G] - Hombre.... no te lo puedo decir... esto no soy yo quien lo evalúa... Pero en fin... te puedo decir que vas a hacer la siguiente entrevista...


Lo cual quiere decir que quizá no lo haya hecho tan mal...

Sinceramente, lo que más trabajo me ha costado es explicar por el teléfono y sin saber el problema de antemano en inglés las cosas... Cosas como "recorrer un array", no recordaba cómo se decían. Quizá como "go through the array", pero no estoy muy seguro... He querido poner esta entrevista para que si alguien se ve después en esta tesitura, al menos sepa a qué enfrentarse.

Y ahora el verdadero problema... Esto es un sueño, sin duda. Google es una de las empresas más importantes e innovadoras del mundo. Pero esto también significaría dejar mi vida aquí y emprender otra dirección. Es difícil conciliar pareja y familia con eso.

sad




sad


Originally uploaded by dsevilla.



.







Originally uploaded by dsevilla.



viento en popa...




my future


Originally uploaded by dsevilla.



Bueno, parece que los trabajos de la urbanización «Agridulce II» están llegando a su fin... Tras pasar por el banco, esperemos estar allí pronto...

lomo fisheye through the viewfinder (or the magic crystal ball)




lomo fisheye through the viewfinder (or the magic crystal ball)


Originally uploaded by dsevilla.



flowers in the evening




flowers in the evening


Originally uploaded by dsevilla.



weston euro master




weston euro master


Originally uploaded by dsevilla.



This is a weston euro master I recently bought for metering with my manual cameras. Testing with the D200, it sems (at least in the low light scale shown) to be -2EV. It may be normal. I really don't know. I have no experience on light meters. Anyway, as the shot shows, I used ISO 25 for the meter. It measured "6", that gave me 1/15 @ f/1.4. This is -3EV than ISO 200 that I used for this shot, giving me 1/30@f/1.4 ISO200, what I used on the D200 to get this shot. In the future, just using two stops down ASA, it will suffice. I have to test it in daylight to see if daylight scale also holds this -2EV behavior...



Es un Weston Euro Master que compré hace poco para medir con las cámaras manuales que tengo. Comparado con la D200, normalmente da -2EV en la escala de baja luz (tengo que probarlo más detenidamente a luz del día). En la imagen, tengo puesto el medidor a ASA25 (-3EV de ASA200, con lo que tomé esta foto), y la lectura era 1/15@f/1.4. Como estaba a 3EV de diferencia y el medidor está a -2EV, usé 1/30@f/1.4 ASA 200.

Encuentros Nacionales Fotogenio Mazarrón 2007

Ayer vi en Planet Murcia una referencia a Fotogenio en Mazarrón, que se celebra este fin de semana. Me he apuntado, espero poder ir. Es de asistencia gratis y hay bastantes ponencias interesantes. Podéis apuntaros usando el formulario de la página web. La organización ha concertado la estancia y comidas con un hotel, o si lo preferís (así lo haré yo) podéis acercaros a Mazarrón. Hay incluso salidas nocturnas, para practicar fotografía nocturna, con lo que me gusta...



.







Originally uploaded by dsevilla.



Best of Flickr 2006

Aunque todavía se puede votar, también se pueden ver los resultados provisionales de la elección de las mejores fotos de Flickr del 2006 que han ido realizando los propios usuarios. Auténticas joyas que van pasando por Flickr y que a veces se nos escapan:

Best of Flickr 2006.

Con sorpresa he visto que mi foto «tres» está en el listado de 7 de 10 puntos. También «... and the ladybug prepares herself for another long night», acabo de ver. Tengo alguna otra, creo, pero están más abajo en la lista, cuando hay muchas más fotos y se me escapa el tiempo en buscar.

there is always one that reaches the most




there is always one that reaches the most


Originally uploaded by dsevilla.



.







Originally uploaded by dsevilla.



El blog del niño gilipollas que quería volar

Buscando otros planetas para escribir mi artículo semanal en «La Chuleta», he encontrado en Planet Granada, literalmente «El blog del niño gilipollas que quería volar». No he podido dejar de reir un rato al leer la entrada que había como más reciente... La reproduzco aquí, junto con la imagen, porque me ha dejado tan sorprendido su creatividad que no puedo más que citarlo completamente. La entrada se llama «Carnaval»:







Ayer tuve un día liadete. Han sido los carnavales en el cole y me lo he pasado muy bien. Yo me disfracé de cohete. No me he quitado el disfraz ni para dormir. Me gustan mucho los cohetes. Pero los que van al espacio, no los que hacen daño a las personas humanas del mundo. Esos son feos y malos.

Estoy pensando en ver si el disfraz funciona. Voy a asomarme por el balcón a ver.



:)

Procesado en batch de imágenes con «The GIMP»

«The GIMP» es, sin duda, uno de los mejores programas de edición e imágenes. Además es gratuito y funciona tanto en Linux como en Windows. Muy raras veces utilizo PhotoShop, porque GIMP cubre casi todas mis necesidades (salvo quizá corrección de lentes gran angular).

El caso es que GIMP es mucho más potente de lo que parece, ya que permite de forma muy sencilla ser programado para realizar labores automáticas. Por ejemplo, el otro día tenía que ajustar automáticamente el balance de blanco a una serie de imágenes y también aplicarles un poco de definición (sharpen) a cada una. Usando el lenguaje Perl y GIMP, se puede escribir un programa tan sencillo como este que trata cualquier fichero y le aplica esos dos pasos, guardándolo después:



#!/usr/bin/perl

use Gimp qw( :auto __N_ );
use Gimp::Fu;
use Gimp::Util;


Gimp::init();

my $img = gimp_file_load (1, $ARGV[0], $ARGV[0]);
my $draw = $img->gimp_image_active_drawable;
$draw->gimp_levels_stretch;

plug_in_sharpen(1, $img, $draw, 30);

gimp_file_save(1,$img,$draw,"$ARGV[0]","$ARGV[0]");

exit 0;



Las dos funciones utilizadas son gimp_ levels _stretch (ajustar los niveles automáticamente) y plug _in _sharpen (con el parámetro 30%). El programa utiliza el primer parámetro pasado como un nombre de fichero. Y voilà...

Se podría pensar que esto es muy complicado porque uno tiene que conocer los procedimientos... Efectivamente, pero GIMP ofrece en el menú "Extn->Examinador de procedimientos" un diálogo que nos permite buscar funciones y nos dice los parámetros de cada una:



different




different


Originally uploaded by dsevilla.



three tree




three tree


Originally uploaded by dsevilla.



Super Teleobjetivos

Por casualidad he encontrado esta página. Está en chino, pero se pueden ver los modelos, las focales y las fotos de los teleobjetivos. Increíble. Echad un ojo a cómo es de grande la cámara en comparación con los objetivos. Aparece en algunas fotos...

Fotoencuentros'07

Es una pena que haya estado tan ocupado y no haya podido hablar más de Fotoencuentros'07. Mientras tanto, os dejo una entrada de «La pistola de Larra» que habla del asunto.

«Pure Fire!» Una recopilación de Gilles Peterson

Permitidme que escriba muy rápido sobre una obra maestra de la música, y de la recopilación, en este caso. El disco «Pure Fire! A Gilles Peterson Impulse! Collection», que escuché hace un tiempo en Área Reservada me parece de lo mejor que he podido escuchar en años.

Es curioso que con lo magnífico que es el programa, no haya más recursos en la web sobre este magnífico programa, «Área Reservada», de Radio 3. El blog surgió a partir de esta entrada en mi weblog, que casi se ha convertido en un foro sobre el programa, con más de 130 comentarios.

.







Originally uploaded by dsevilla.



Cámaras extrañas

Me ha parecido curioso este artículo de TechEBlog sobre cámaras curiosas. Hay hasta una cámara de 160 Megapíxeles que hace panoramas de medio formato. Para haceros una idea, los sensores de las cámaras digitales son bastante más pequeños que un negativo de cámara tradicional. Los de las cámaras Reflex digitales son 1.5 veces más pequeños que un negativo estándar. Esta cámara tiene un sensor que es del tamaño cinco veces superior al de un negativo de 35mm (la película normal y corriente). Ahí es nada. Cada imagen sin comprimir ocupa 1GB. Eso quiere decir que en una Compact Flash de 1GB cabe una imagen... En fin, siempre tiene que haber una punta de lanza de innovación. En algún tiempo supongo que 100 Mpix será normal... Lo que no será normal, por ejemplo, será un objetivo como el recientemente sacado por Zeiss: Un 1700mm tal que así (unos 250 kg):


zeiss 1700


(via Gizmodo)

Magnífica Lola Gracia

Alguna vez lo he dicho, pero sigo regularmente el blog de Lola Gracia. Sus historias y poesías te atrapan sin remisión. Imaginad qué ilusión cuando veo que en algunas poesías y textos utiliza fotos mías para ilustrarlas. «Mariposas muertas» es un relato crudo y conmovedor.

The S stands for Simple

Pete Lacey Weblog made me laugh today. In his hilarious article "The S stands for Simple" shows how all the Web Services specifications and SOAP in particular has become so complex and unusable as people once criticized CORBA was. At least CORBA is object-oriented, and has a far more efficient on the wire protocol (and much more better things, let me say). I really love the part on:


SOAP Guy: Well, just like it says in the name, SOAP is used for accessing remote objects.


Developer: Like CORBA?



SG: Exactly like CORBA, only simpler. Instead of some complex transport protocol that no one will let traverse a firewall, we use HTTP. And instead of some binary message format we use XML.



Dev: I’m intrigued. Show me how it works.



SG: Sure thing. First there’s the SOAP envelope. It’s pretty simple. It’s just an XML document consisting of a header and a body. And in the body you make your RPC call.



Dev: So this is all about RPCs?



SG: Absolutely. As I was saying, you make your RPC call by putting the method name and its arguments in the body. The method name is the outermost element and each sub-element is a parameter. And all the parameters can be typed as specified right here in Section 5 of the specification.


[...]


Dev: (Reads XML Schema spec). Saints preserve us! Alexander the Great couldn’t unravel that.



:)

a pleasant evening




a pleasant evening


Originally uploaded by dsevilla.



yyyyyYyy




yyyyyYyy


Originally uploaded by dsevilla.



polo




polo


Originally uploaded by dsevilla.