Hackeando la realidad

La idea de este post viene de lejos. De tan lejos como el estreno del Episodio III de la saga de Star Wars, allá por el 2005.

Dedicado al mundo de la informática, uno de los apartados más excitantes es el dedicado a la seguridad informática y sus diferentes variantes (desde el hacking hasta el cracking, pasando por la ingeniería social). No pretendo detallar estos conceptos a los profanos, simplemente explicaré un punto muy concreto.

En un ordenador, sea cual sea, en cada momento se están ejecutando decenas, cientos, miles de tareas simultáneamente. Estas tareas se llaman "procesos", programas en ejecución haciendo lo que se les ha pedido que hagan y devolviendo la respuesta a quien los lanzó (ya sea un usuario del ordenador, u otro proceso). Estos procesos se ejecutan dentro de un contexto, en particular, de seguridad.

Es decir, si un usuario de un ordenador intenta abrir una carpeta en la que no tiene permisos, el proceso que se encarga de abrir el contenido y mostrárselo, "hereda" los permisos del usuario en cuestión. Así, el sistema operativo, garante de que los procesos hagan lo que tiene que hacer y controlar que no se salgan de su contexto, cuando el proceso intente acceder a la carpeta con los permisos del usuario limitado, le dirá: perdona majo, pero no tienes permisos para acceder a esta carpeta. Y le dará un error, y el proceso de apertura de la carpeta, se lo dará al usuario: mira una cosita, que con tus permisos me dicen que acceder ahí tararí.

¿Pero y si lo intenta un usuario que sí tiene permisos? Pues EL MISMO PROGRAMA (sí, sí, como si fuera un mayordomo al que pedirle cosas, una y otra vez) de apertura de carpetas lo intentará con los nuevos permisos, y el sistema operativo, esta vez sí, dirá que perfecto, en esta discoteca puedes acceder, que tienes pase VIP, y se mostrará el contenido al usuario.

Es decir, un proceso puede o no hacer lo que se le pide que haga en función de (entre otras cosas), quién ha lanzado dicho proceso.

Siguiendo con el símil, a la discoteca más molona de la ciudad no puedes entrar en zapatillas, salvo si eres CR7... Queda claro, ¿no?

Ok. Sigamos. Hay una excepción. Como siempre.

¿Qué pasa si aparece un tipo en la puerta de la discoteca pegando tiros con una pistola? ¿Creéis que el portero no te dejaría entrar en zapatillas aunque no seas CR7? Venga, va, pensemos que sí. Que el tipo ve que se trata de un estado excepcional, donde importa más la vida de una persona (aunque lleve zapatillas...) que la norma general que no le dejaría pasar.

Esto mismo pasa con un programa en ejecución. El sistema operativo (el portero), sabe decidir si hay casos excepcionales o no. ¿Qué casos? Aquellos en los que a pesar de los permisos, el programa genera un problema que el sistema operativo considera que "debe intervenir" por ser lo "suficientemente grave" como para hacerlo. Problemas los hay de muchas clases, mis favoritos son el NullPointerExcepction (por supuesto...), el StackOverflow (que ha dado el nombre a la famosa stackoverflow.com) y el Kernel Panic.

En todos esos casos, donde el programa comete un error, el sistema operativo toma el control. ¿Y adivináis qué permisos tiene el sistema operativo? dicho de otra manera. ¿Qué capacidad de acción tiene el portero de la discoteca si se le dice que la norma de las zapatillas ya no aplica? Toda. Exacto. Toda. El sistema operativo es todopoderoso. Hasta para destruirse a sí mismo si hace falta. El sistema operativo, como el portero en momentos de crisis, es, literalmente, dios (decide si te matan o entras con zapatillas).

- Y, ¿qué? - preguntaréis.
- No os falta razón - diré.

Una técnica habitual de hacking trata de aprovechar esta situación. Imaginad que quiero entrar a su garito con zapatillas (que no me miren mal al pasar), y para ello, me las ingenio para hacer creer al portero que estamos en una crisis, que viene alguien con una pistola pegango tiros. El portero me deja entrar: objetivo conseguido. Es decir, he generado un estado de excepción, para aprovecharme de que el portero puede hacer lo que quiera en esos momentos, instándole a tomar una decisión que me beneficia (he entrado con zapatillas!).

Con el ordenador es lo mismo. Puedo hacer un programa que prepare un estado de excepción tal, que cuando el sistema operativo tome el control para resolverlo, haga lo que yo quiera (y no puedo normalmente, entrar con zapatillas) aprovechándome de su omnipotencia.

Mola, ¿no? Imagina las posibilidades. Escríbeme un par de ceros en la próxima nómina, envíame por email ese informe clasificado de alto secreto, envía tropas al sudeste de la casa de tu ex, lanza la bomba atómica... ah! y luego bórrate entero a ti mismo, claro.

- Vale, vale, menudo rollo. Creo que lo he pillado. Y esto con Star Wars, ¿qué? - preguntaréis de nuevo.
- Gracias pequeño padawan, excelente pregunta. - diré a mi vez.

Si recordáis la película, el Episodio III es aquél en el que Anakin Skywalker da paso a Darth Vader. Probablemente sea la más oscura de todas (salvo, tal vez, el nuevo Episodio VII...) y es la favorita de Aysha (mi hija). Con todo lo que el final del proceso de conversión implica, casi pasa desapercibido un hacking en toda regla a lo ya descrito en este post con el portero de discoteca.

El senador Palpatine, una vez elevado a Canciller de la República, aprovecha un estado de excepción generado deliberadamente, la guerra, para declararse a sí mismo Emperador, y apropiarse de una serie de poderes sin control del Senado en aras de una mejor gestión de dicha crisis.

Es decir, pasándolo a limpio. A sabiendas de que un estado de excepción (viene alguien pegando tiros en la discoteca, un error de programación deliberado en un ordenador, una guerra) va a modificar las reglas del juego, en particular la del control del poder y encontrarse en una situación de omnipotencia dedicada a una situación muy concreta (solventar la crisis), se pone a sí mismo en tal situación para, una vez en ella, hacer lo que se le ponga en las pelotas.

Hacking de libro.

- Y si tenías esto en la cabeza desde hace tanto, ¿por qué lo escribes ahora? - volveréis a preguntar.
- Porque lo de Turquía se le parece mucho, mucho, mucho - diré yo - y por tanto es más necesario que nunca escribirlo.

5 años de inteligencia artificial :)

Dear Gorka,
I can't believe it. It's been an exhilarating five years. Today, Udacity turns five!
Udacity started with a phone call to Peter Norvig. I wondered if it made sense to take our Stanford class CS223 “Introduction to Artificial Intelligence” online, and make it available to all people in this world. Peter was enthusiastic, and along with my co-founders David Stavens and Mike Sokolsky, we made it happen. This wasn't the first MOOC, but it was the one that put Massive Open Online Courses on the map. In a few weeks, we gathered 160,000 students. Our course taught Artificial Intelligence to more people than all other AI professors combined at the time.
Fast forward to today. Udacity is now rapidly becoming the place to go for lifelong learning where millions are learning the latest skills that Silicon Valley has to offer. Tech giants like AT&T, Google, Facebook, Amazon, GitHub and MongoDB are using us to reach any willing learner in the world. And companies are eagerly hiring our graduates. We have educated more students that many four-year colleges. And recently, we started placing our graduates in jobs in the tech industry and beyond, based on their Nanodegree program credentials.
Our fifth anniversary is a great moment of reflection. To many, education is a numbers game. It's about tuition, graduation rates, enrollment. To me, education is all about people. Every time I receive a thank-you note from a student, a letter on how we changed a person's career, I am in tears. I have this very deep belief that if we open up high-quality education, if we truly democratize it, if we give every human being on this planet a fair chance, we will make a huge difference. Today, high-quality education is a privilege of the few. Our vision at Udacity is to make high-quality education a basic human right. If we do this, I truly believe we can double the world's GDP.
I look back at the past five years and feel we did the impossible. We created a company that allows eager learners of all geographies and all ages to engage in meaningful education, and to live their lives' dreams. To encourage even more of you to find your dream careers through Udacity, I have something special to share. In celebration of our 5-year anniversary, we will give any student who enrolls 55% off your first month!
Udacity is a story of amazing students, people just like you. Many have stayed with us through the years, assisted us in improving our offerings, and helped us spread the word. I really want to thank every single student who has been willing to trust us as a source of learning. Udacity would not exist without you, and you are the focus of our work.
Every single student who discovers their dream career through Udacity makes me believe life is worth living. Thank you for being a part of the Udacity community!
Excitedly,
Sebastian Thrun
Co-Founder & CEO of Udacity
P.S. Enroll before 7/10/16 using the link above, and the 55% discount will be applied automatically.

Y, ahora, qué?

Hace poco más de dos años tomé una de las decisiones más complicadas de mi vida. Fue un momento de muchos cambios a la vez y dejar un trabajo de 6 años de antigüedad en el que estaba asentado (y anquilosado, pero eso es otra historia), no parecía poder ayudar a no volvernos (más) locos.

Y es que las oportunidades salen cuando salen y no hay otra que tomar una decisión. Cambiar de trabajo a www.ticketbis.com fue uno de los pasos más críticos de mi carrera.

No soy informático. Soy parte de esa marabunta de intrusistas que han degradado la profesión del noble informático al rango de picateclas de consultora (ironic mode off). Pero hay otro mundo. Ahí fuera. Al que acceden los informáticos de estudio y al que nunca pensé en llegar como autodidacta (casi todo lo que sé lo he aprendido fuera de una carrera universitaria y sobre la marcha a base de tortas). Pero se puede. Si se quieren (y se ha aprendido a) hacer bien las cosas, se puede.

Así que, encontrarme de repente en una empresa rodeado de un equipazo técnico (que ha ido creciendo año a año), ha sido como un master. He aportado mi granito de arena técnico-organizacional en un entorno de aguas cristalinas y con la corriente a favor tras años de entrenamientos insufribles a contracorriente de un mar de mierda.

Y ha sido genial.

A los seis meses de entrar ya era evidente que fue un acierto el cambio. Creo que nunca olvidaré aquella conversación con @xala3pa en la que me hablaba de lo que me iba a encontrar (y así fue), cosa que ahora hago con quienes me preguntan por cómo son las cosas aquí. Cuando las cosas parecen muy bonitas para ser verdad, raramente lo son realmente. Esta vez sí, indudablemente, lo fueron.

En estos (más de) dos años hemos peleado por avanzar la web, el negocio, todo lo arriba posible. Desde mi llegada (sin insinuar ningún tipo de causa-efecto personalista, esto es un trabajo de un equipo muy grande), hemos pasado de un millón escaso de facturación semanal (entonces me parecía una barbaridad, te acabas acostumbrando a las cifras), a más de dos millones.
Tecnológicamente se hacen muchísimas issues. Recuerdo la mítica 1663 del Jira que hice al cierto tiempo de haber entrado (la primera "gorda" que acabó en producción), hoy en día vamos cerca de la 6900 (y subiendo).

Hemos pasado de (y se venía de un historial guay anterior...) dos oficinas en el séptimo piso de un edificio con un dudoso vecino de abajo en el sexto (hasta aquí puedo leer), a un lugar más grande en el BBF. De ser unos 15 a ser unos 30 (en el departamento de IT).

Y en realidad, no ha cambiado nada.

El mismo buen rollo, apoyo del equipo, alegría de currar, de aportar, de seguir adelante, de rascar un 1% más de conversión, de hacer las cosas bien, de rehacerlas bien cuando se han torcido, de mejorar técnicamente no sólo la plataforma sino uno mismo. De acudir a eventos como la Greach (está vez protagonistas!), a la Codemotion, a la oficina de Madrid y ser recibido como uno más de los que siempre están por allí, de cenas de navidad donde se exalta a las personas y no (tanto) a la empresa.

Será que no cambiar nada cuando se está en una buena línea nos ha ido bien.

Y también será que no vemos muchos de los entresijos donde la pelea es menos "documentable", menos "relatable", menos "bonita". Hablo de la gestión del negocio, de rondas de financiación, de la toma de decisiones de cada vez mayor responsabilidad (cuando 1% de desviación supone 1€ de diferencia no es lo mismo que cuando supone 100.000€...), de decidir seguir rascando la cuenta para seguir creciendo, expandiendo.

Algo han hecho bien desde ahí arriba (bueno, desde el fondo de la oficina, donde uno de los que decide realmente es uno más...).

Y así de repente, anteayer, llega un email a toda la empresa, de esos que no es normal. Pueden llegar a toda la oficina de bilbao o a todo el departamento de IT, o al equipo de Checkout... a toda la empresa es algo más raro:

We have exciting News

nos dicen.

Casi todos tenemos que leer el email 4, 5, 6 veces para estar seguros de estar entiendo lo que realmente es.

No tener google news en España hace que nos cueste encontrar confirmación en una fuente pública (no sabemos si el canal oficial es público aún). Encontramos la primera que se atreve a poner cifras, y de la que empiezan a beber todo el resto de fuentes. A los 20 minutos, la fuente original da un error de acceso. ¿Tira la piedra y esconde la mano?

En cualquier caso, en seguida la noticia vuela por Twitter, hasta llegar a ser TT en España.

Es real.

Todo el mundo nos da la enhorabuena más o menos personalmente, según cercanía. Fuera del ámbito de la empresa, hay un 100% de certeza de que es algo bueno.

Inevitablemente, la pregunta que todos nos hacemos en este excitante momento es, tal y como tomé aquella vista-desde-ahora-acertada-decisión,...

... y, ahora ¿qué?

Por de pronto, una celebración.



Y otro email:

Welcome to StubHub!

La ignorancia es la felicidad

Hace unas semanas me crucé de nuevo con una canción. Dicha canción ha pasado de un extremo al otro de mis gustos musicales, y ahora simplemente es la que me mueve mientras camino hacia y desde el autobús.

Inevitablemente, tuve que pasar de oír a escuchar, y posteriormente, entender. Desde que hace años, en uno de los últimos Operacion Triunfo, uno de los más zoquetes descubría, a pocos días de tener que salir a defenderla, la historia detrás de la letra de la canción que le tocaba. Y al grito ahogado de "es que cuando la traduces..." aguantaba las lágrimas en aras de arañar algunos votos.

Yo me he puesto de mala leche.

Será que el contexto histórico es diferente, será que los tiempos cambian que es una barbaridad, será que la música tiene bastante poco que ver con la letra... supongo que muchos la conoceréis, a casi todos os sonará... arranquen y sigan leyendo.



Letra aproximada
Traducción libre

Comentario al respecto.


I've been cheated by you since I don't know when
Me has engañado desde hace no sé ni cuando

Ok, empezamos bien... Una de cuernos, parece...

So I made up my mind, it must come to an end
Así que me he decidido, esto se acabó

Ea, así, en tu sitio.

Look at me now, will I ever learn?
Mírame ahora, alguna vez aprenderé?

Esto... cómo?

I don't know how but I suddenly lose control
No sé cómo, pero de repente he perdido el control

Qué? Pero qué dices?

There's a fire within my soul
Hay un fuego en mi alma

Eín? Qué fuego ni fuego... Espera! Lo vas a matar!

Just one look and I can hear a bell ring
Sólo una mirada y escucho campanadas

De su funeral?

One more look and I forget everything, w-o-o-o-oh
Una mirada más y lo olvido todo

Cómo que te olvidas? espera, espera... te olvidas de sus cuernos?

Mamma mia, here I go again
Mamma mia, aquí voy otra vez

Te has olvidado! Qué haces?!

My my, how can I resist you?
Ay no, cómo resistirme a ti?

Cómo? Comiendo?! Vas a volver con él?!

Mamma mia, does it show again?
Mamma mia, aparece de nuevo?

Pues claro, y se te nota, estás fatal

My my, just how much I've missed you
Ay no, cómo te he echado de menos

Ten un poco de respeto por ti misma...

Yes, I've been brokenhearted
Sí, se me rompió el corazón

Para lo que te ha servido...

Blue since the day we parted
Depre desde que lo dejamos

Chica, que le dejaste tú! por sus cuernos!

Why, why did I ever let you go?
Por qué, por qué te dejé marchar?

Porque te puso unos cuernos de aquí a Lima, recuerdas?

Mamma mia, now I really know,
Mamma mia, ahora sé realmente

A ver con qué nos sales ahora

My my, I could never let you go.
Ay no, que nunca pude dejarte ir

Toma! no estás pensando con claridad...

I've been angry and sad about things that you do
He estado furiosa y triste por las cosas que hiciste

Bien rápido se te ha olvidado

I can't count all the times that I've told you we're through
No puedo contar las veces que te he dicho que terminamos

Genial, como dejar de fumar una vez al mes...

And when you go, when you slam the door
Y cuando te vas, dando un portazo

Creo que te ya te veo venir...

I think you know that you won't be away too long
Creo que ya sabes que no estarás lejos demasiado tiempo

Como para no, con este historial que me llevas...

You know that I'm not that strong.
Sabes que no soy tan fuerte

Venga! Dáselo mascadito ya, respétate un poco...

Just one look and I can hear a bell ring
Sólo una mirada y escucho campanadas

Total, de perdidos al río, no?

One more look and I forget everything, w-o-o-o-oh
Una mirada más y lo olvido todo

Lo dicho, un caso perdido

Mamma mia, here I go again
Mamma mia, aquí voy otra vez

Perdona? no estaba escuchando

My my, how can I resist you?
Ay no, cómo resistirme a ti?

Si no haces algo por ti, como para ayudarte el resto...

Mamma mia, does it show again?
Mamma mia, aparece de nuevo?

Como para no

My my, just how much I've missed you
Ay no, cómo te he echado de menos

Esto ya lo he oído antes

Yes, I've been brokenhearted
Sí, se me rompió el corazón

Tú te lo has buscado

Blue since the day we parted
Depre desde que lo dejamos

En tu mano está cambiarlo

Why, why did I ever let you go?
Por qué, por qué te dejé marchar?

Porque tuviste un momento de lucidez entre tanta tontería

Mamma mia, even if I say
Mamma mia, aunque diga

Digas qué? A ver si esto acaba bien

Bye bye, leave me now or never
Adiós, déjame ahora o nunca

Mejor ahora que nunca, la verdad...

Mamma mia, it's a game we play
Mamma mia, es juego al que jugamos

Y aquí el resto preocupados...

Bye bye doesn't mean forever
Adiós no significa para siempre

Está claro.

Mamma mia, here I go again
Mamma mia, aquí voy otra vez

Ya ni nos inmutamos

My my, how can I resist you?
Ay no, cómo resistirme a ti?

Para qué responder, si no escuchas

Mamma mia, does it show again?
Mamma mia, aparece de nuevo?

A kilómetros se ve venir...

My my, just how much I've missed you
Ay no, cómo te he echado de menos

Te echa de menos tu dignidad

Yes, I've been brokenhearted
Sí, se me rompió el corazón

Y te volverá a pasar

Blue since the day we parted
Depre desde que lo dejamos

Ineludible, desde luego

Why, why did I ever let you go
Por qué, por qué te dejé marchar?

Va, en serio, porque eres tonta

Mamma mia, now I really know
Mamma mia, ahora sé realmente

Y me temo que todo el resto del mundo

My my, I could never let you go
Ay no, que nunca pude dejarte ir

De lo tuyo gastas...


La pregunta que queda es, ¿una letra así sería aceptable hoy en día por el gran público?