Marzo 2012

Guaranteed compression

A few eons ago I was a member of a network called Fidonet, which had an echoarea (the equivalent of a mailing list) dedicated to file compressors. As I was fascinated by them at the time, I was naturally a subscriber.

Every once in a while someone would come in and ask if there could be a compressor that were guaranteed to compress the input data by at least one byte. The response was invariably that no, there couldn't be one, and the argument was based on the pigeonhole principle: if there were such a compressor, you could use it to compress some data, then use it on the compressed data to compress it even more, and so on until you are left with a byte, which would mean that there are only 256 possible distinct files in all of the Universe. This is clearly absurd, so there can't be such a compressor.

While I agree with the conclusion, I find the argument unsound, so let's explore it with the help of a close cousin of this compressor everyone asked about.

There is a compressor that is guaranteed to either produce an output the same size of the input, or produce an output one bit smaller than the input. This compressor simply interprets the input data as a big binary number and subtracts 2 from it. The corresponding decompressor is also very easy: just interpret the input data as a big binary number and add 2 to it.

It is easy to prove that the compressor will always produce an output file that is either the same number of bits as the input file, or 1 bit smaller. Therefore, you can use the compressor, get an output file, use the compressor on the output file, get a new output file, use the compressor on the new output file, and so on until you get a file that only contains 1 bit that can be 0 or 1. According to the argument above, this would mean that only two documents exist in the whole Universe; however this is clearly not true, so what's the catch?

The catch is that we can't reconstruct the original document with the compressor's output alone (the 0 or 1 bit). We need more information to do that: we need to know how many times we applied the compressor so we can apply the decompressor an equal number of times to reconstruct the original file. So let's add the number of compression operations to the last compressed file. How big is the resulting file?

The compressor works by subtracting 2 from the number we interpret the input file as. If I apply the compressor once, I will have subtracted 2; if I apply it twice, I will have subtracted 4 from the original file; if I apply it 1000 times I will have subtracted 2000. To get a single bit I need to apply the compressor enough times that the original file minus twice the number of applications is 0 or 1. That means that, if I call the original file "i", the ultimately compressed bit "c" and the number of compressions "n", I have that i=2*n+c.

Therefore, to compress the input file i you will need n operations, and n is one half of i. You will now need to append the number n to the output of the last compression step to be able to reconstruct the original file. The input file i has b bytes, and n is one half of i, so n has b-1 bytes. Therefore, you will have to store 1 bit for the compressed data, plus b-1 bits for n, which amounts to b, which is the length of the original file!

So yes, while it is not true that being able to reduce a file to 1 bit or 1 byte by successive compressions means that there are only 2 or 256 files in the Universe, it is still true that doing so will be of no benefit.

Comments are welcome — on the Google+ post.

La carta de presentación

Ahora que os he mostrado cómo es un currículum para EEUU/UK, llega el momento que todos estábais esperando: cómo escribir la carta de presentación ("cover letter", en inglés).

Como mencioné antes, deberíais adjuntar una carta de presentación cada vez que enviéis un currículum. No confundáis la carta de presentación con una carta de recomendación: la carta de presentación la escribís vosotros mismos, y sirve para decirle a la persona que reciba el currículum por qué deberían tener en cuenta vuestra candidatura.

A grandes rasgos, una carta de presentación tiene una extensión de una carilla como máximo y consta de tres partes: a qué puesto optáis, por qué sois perfectos para el puesto, y por qué queréis el puesto. La carta de presentación es, como su propio nombre indica, una carta, así que no pongáis encabezados y listas de puntos y negritas y cosas de esas.

Si estáis enviando el currículum por correo, adjuntad la carta de presentación en el mismo sobre y no la grapéis al currículum. Si lo estáis enviando por email, mandad el currículum en un fichero adjunto y usad el cuerpo del email para la carta de presentación. Si podéis averiguar quién recibirá la carta de presentación será mucho mejor si la encabezáis "Dear Mr. Smith" que si la encabezáis "Dear Sir/Madam". Por cierto, aseguraos de utilizar una dirección de email "seria"; aunque tengáis que emplear webmails gratuitos, es mejor usar "francisco.paredes@gmail.com" que "erpisha23@gmail.com", y mejor "carolinacf@hotmail.com" que "preziossa89@hotmail.com".

Antes de enseñaros un ejemplo de carta de presentación, permitidme reiteraros que el objetivo de la carta de presentación es que la persona que recibe el currículum sepa que no va a perder su tiempo leyendo vuestro currículum, y para eso deberéis hacer énfasis en los beneficios que proporcionará a la empresa contrataros. Al fin y al cabo, las empresas no contratan gente para tener más amigos, sino para poder ganar más dinero, así que tenéis que "atacar" por ese lado.

(De hecho, si os fijáis en el currículum de ejemplo, veréis que se sigue la misma filosofía a la hora de describir la experiencia laboral. El trabajador del ejemplo describe cómo ha rescatado un proyecto o cómo ha reducido costes el 20% o cómo ha dirigido un equipo, no cómo ha formado parte de un equipo formado para estudiar la posibilidad de implementar una recomendación para un proyecto exploratorio).

Y una última reflexión: para variar, estos consejos para la carta de presentación no son sólo válidos para optar a empleos en EEUU o el Reino Unido. Si preguntáis a alguien que trabaje en RR.HH. de una empresa española os dirá que todos los días les llegan un montón de currículums "desnudos" o con cartas de presentación poco atractivas. Seguramente, si comenzáis a enviar vuestros CV acompañados de cartas de presentación en este estilo, vuestros CV destacarán más. Haced la prueba y decidme si resulta :-)

Dicho todo esto, en el enlace de "leer más" podréis ver una carta de presentación, enviada por correo acompañando al currículum de ejemplo. El autor quiere trabajar de ingeniero jefe de software en una empresa británica llamada "Super Company".

Tened en cuenta que este ejemplo es algo más corto que una carta de presentación normal porque, honestamente, tener que inventarse todos los detalles es un peñazo :) Pero bueno, podéis utilizarlo para haceros una idea de qué tipo de cosas se dicen en una carta de presentación; cuando tengáis que escribir la vuestra, simplemente buscad "cover letter example" en Google y usad lo que os salga para inspiraros.

Podéis escribir vuestros comentarios en Google+.

Un currículum de ejemplo para EEUU, Reino Unido o Irlanda.

Hace poco más de un año escribí una historia sobre cómo redactar un currículum para enviarlo a una empresa de EEUU, Reino Unido o Irlanda (aprovechando que los formatos para los tres países eran casi iguales). Lo que ese artículo no incluía eran ejemplos, y alguien me los ha pedido, así que voy a poner aquí un ejemplo recién inventado de résumé para el Reino Unido. Como comenté en el artículo anterior, el résumé americano sería prácticamente igual, salvo que en lugar de un "Profile" tendría unos "Objectives".

Espero que os sirva para redactar vuestro propio currículum. Recordad que, cuando lo enviéis, deberíais acompañarlo de una carta de presentación, de la que os daré un ejemplo otro día.

Podéis poner vuestros comentarios en Google+, que aquí siempre se me echan los spammers encima cada vez que abro una nueva historia con comentarios.