Integración, APIs y no me toques los bezos

Según Steve Yegge, un día Jeff Bezos, el capo de Amazon, envió un memorándum interno que venía a decir:

1) All teams will henceforth expose their data and functionality through service interfaces.

2) Teams must communicate with each other through these interfaces.

3) There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team’s data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.

4) It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter. Bezos doesn’t care.

5) All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.

6) Anyone who doesn’t do this will be fired.

Este puñetero memo, y toda la gente que lo ha leído y ha aplicado el silogismo falaz de “En Amazon son unos cracks, en Amazon siguen este credo ergo si yo sigo este credo seré un crack” son un maldito dolor de cabeza.

Conste que no es que considere que las APIs sean una plaga a exterminar, ni mucho menos, pero debería olernos mal las sentencias absolutistas y los razonamientos de talla única. No todos los entornos son iguales, ni se enfrentan a los mismos problemas- y por tanto lo que funciona para unos, no funciona para otros. Adicionalmente, es difícil razonar que la aplicación ciega de esta doctrina es lo que ha llevado a Amazon al éxito y estoy seguro que no en pocas ocasiones mejor les hubiera ido siendo un poco más críticos.

La realidad, maldita ella, siempre se interpone a los ideales. Implementar una API tiene un coste en tiempo que no siempre es amortizable por sus beneficios. Conste que el hecho que no se vaya a usar la citada API tampoco es un argumento tan fuerte en contra de estas- el hecho de añadir una API usable nos fuerza a hacer el código modular lo cual es un valioso beneficio en sí mismo que si puede valer la pena- aunque es perverso el argumento de ser modulares porque tenemos que implementar una API: seamos modulares porque está bien ser modular sin necesidad de dichosas APIs.

Pero más allá del coste de implementar la API, la imbezosidad esta muchas veces lleva a auténticos pantanazos donde dos departamentos de la misma empresa fuerzan que dos sistemas se comuniquen a través de una API. API a la que muchas veces no se le dedica el tiempo necesario y que no permite alcanzar todo lo que se necesita de una forma eficiente y efectiva, que fuerzan a implementar soluciones chapuceras que no benefician a nadie, cuando habría alternativas perfectamente efectivas.

Bezos prohibe explícitamente, por ejemplo, el acceso a base de datos entre aplicaciones- quizá la situación más común en el que la gente se arma del memorándum para tomar decisiones insensatas. “¡Os daremos una API maravillosa!”, “¡Permitirá que saquéis toda la información que necesitéis!”, “¡La extenderemos rápidamente con vuestras nuevas necesidades!”. Mentiras y más mentiras. Cuando yo te podría escribir un par de selects que me sacan todos los datos que necesito fácil y eficientemente, tú me darás una API castrada en la que tendré que hacer numerosas llamadas de API para obtener los mismos resultados y que se tendrá que extender cada vez que surja un nuevo requerimiento. Eso si lo extiendes, porque “oh, lo siento, ahora estamos liados con otra cosa” hará que no se pueda implementar tal requerimiento en no pocas ocasiones.

Sí, desde luego, esto no es algo universal tampoco- como tampoco lo es la doctrina de las API. Si son los mismas personas las que implementan la API y la consumen, o hay una suficiente coordinación de objetivos, esto no tiene por qué ser un problema. Sin embargo, muchas veces lo es. Y es precisamente para levantar vallas entre vecinos uno de los motivos con los que se esgrime el credo- consciente o inconscientemente.

¿La solución? No sigas ninguna regla ciegamente. Como siempre.

La absoluta grandiosidad de Rompe Ralph

Es indiscutible que el cine de animación ha observado un gran resurgimiento en los últimos tiempos y muchos de sus pelotazos han sido universalmente aclamados como grandísimas películas para niños y adultos. Un servidor debe admitir que siempre se ha sentido un poco al margen de esto y que salvo honrosas excepciones (casi que me limitaría a WALL-E, el primer acto de Up y si me he de estirar cual Elasti-girl, los Increíbles) me deja en general bastante frío.

Obviamente en su momento vi los trailers y promociones de ¡Rompe Ralph! en su momento, y por supuesto secuencias como la reunión de villanos anónimos con un fantasma de Pacman, Zangief, Bowser y otros me atrajeron como un bicho a la luz, pero por un motivo u otro acabé no viéndola en el cine. Posteriormente, por casualidades del destino, Renfe se dignó a ofrecerme a Ralph en vez de una tercera proyección en dos semanas de Star Trek: en la oscuridad.

¡Y qué feliz coincidencia!

Pocas veces me he quedado tan enganchado a una butaca mirando una pantalla minúscula forzando el cuello. ¡Rompe Ralph! es una maravilla de principio a fin. Parte de la más que jugosa premisa de que los personajes de los juegos de un salón recreativo tienen vida propia y se ocupan de sus asuntos fuera de sus “horas de oficina”- en este caso el Ralph del título es el malo de “Repara Félix Junior”, cansado de su rol como villano que decide ser el bueno por una vez. Este argumento, que podría haber resultado plano y simplón se transforma en toda una epopeya gracias a un trabajadísimo guión que si bien tampoco es que sea un laberinto inacabable de giros y sorpresas, es más elaborado de lo que uno pensaría y consigue aprovechar todo el potencial del planteamiento y de las generosas licencias que permiten que aparezcan multitud de personajes de videojuegos reales.

La historia combina los personajes de tres juegos inventados- el “Repara Félix Junior” de Ralph, “Hero’s Duty”, un shooter de marcianitos y “Sugar Rush” un Mario Kart aún más almíbarado si cabe- hilvanandos las historias de sus personajes con habilidad, tirando de clichés y dejes videojueguiles y con alguna que otra hábil subversión. Además los personajes tienen unas personalidades más que tridimensionales que ayuda a darle una tremenda dimensión humana a la película- Ralph en toda su apariencia caricaturesca tiene toda una dimensión trágica y una humanidad que ya quisieran para sí muchos personajes de sesudos dramas- él y los demás dotan a la película de una emotividad sorprendente y poderosa.

En el aspecto técnico, la animación es absolutamente sobresaliente y destaca en su completa virtuosidad en el paso a las tres dimensiones de los juegos bidimensionales. Cada videojuego tiene una estética trabajadísima que se combinan con fluidez con el estilo visual de otros tantos videojuegos reales; los personajes de juegos más retro se maravillan de los gráficos de los juegos de última generación, pero encajan perfectamente conservando cada uno su propia personalidad sin mayor problema.

La banda sonora así mismo recorre con gracia todos los lugares habituales videojueguiles, e incluso las dos canciones-estrella-invitada, una de Rihanna y la de los créditos de Owl City en VO y Auryn en España no desentonan.

En definitiva, una película sobresaliente a la que es muy difícil no querer colocar en los olimpos cinematográficos. Hasta los no videojueguistas disfrutarán de lo lindo y los rompe-joysticks sobra decir que alcanzarán en el extásis (y hay un par de guiños ahí que sacarán ovaciones cerradas). Peliculón.

Jugando en 2013

Mis hábitos videojueguiles se han incrementado sustancialmente recientemente. Sin más, a qué he estado jugando últimamente:

Humble Bundles

Me enganché ahí por septiembre de 2012 con el Humble Indie Bundle 6 por Bit.Trip Runner, el Gratituous Space Battles, Shatter y SPAZ (aunque este último no me tiraba inicialmente en Linux). Sobre todo al que más le di fue al Bit.Trip, hasta que llegué al límite de mis reflejos.

En junio de 2013 le di al Humble Bundle with Android 6, atraído por el prometedor Frozen Synapse, que cumplió sus promesas como ya explique en una entrada anterior. Luego estas navidades han caído casi consecutivamente:

  • Humble Bundle: PC and Android 8, por el genial AaaaaAAaaaAAAaaAAAAaAAAAA!!! for the Awesome
  • Humble Jumbo Bundle, por el Serious Sam 3: BFE, al que aún no he jugado mucho
  • y la Humble Weekly Sale: Puppy Games, un pack de jueguecillos retro de Puppy Games la mar de gracioso, que incluye un Galaga, un Robotron y algo parecido al Paradroid, entre otros

Steam

En un arranque de nostalgia, y en parte por premiar el compromiso de Valve con Linux, me he pillado dos FPS clásicos.

El primero, por supuesto, mi querido Quake II, al que le dediqué muchas horas gloriosas en su momento y del que quiero recuperar el disfrute descerebrado de batallas al límite con legiones de bots. La verdad está siendo una odisea por ahora inacabada, ya que primero sólo está disponible en Windows, con lo que hay que instalarlo en Steam para Windows (en máquina virtual en mi caso) y traspasar los archivos de juego para usarlo con un cliente Linux (Yamagi, en mi caso). Con esto ya he podido jugar (por enésima vez) a los primeros niveles del modo de un solo jugador (aunque a 1920×1080 y unos gráficos que no disfruté en su época). Pero la clave está en hacer funcionar LMCTF, el mítico capturar la bandera con el “off-hand hook”, un gancho que puedes disparar al más puro estilo Spider-Man para columpiarte por el mapa mientras disparas, una mecánica de juego absolutamente gloriosa… y luego sumarle un bot (el Ultra, creo).

El otro es el Counter-Strike clásico. Ha sido genial comprobar como los servidores de un juego que salió en el 99 (¡el 99! ¡hace 14 años!) siguen llenos de jugadores matándose en el Dust. Yo no era muy de Counter en aquella época, pero estaba de oferta y es disfrutar de una pieza de museo.

PS3

Tenía la Playstation un poco olvidada- el GTA4 no era muy de mi agrado, el GT5 lo tenía ya muy visto y sólo le daba con cierta frecuencia al último Pro. Pero en esta última parte del año salió el GTA5, que me acabé y describí por aquí, y hace unos días le he echado mano al GT6. Cuando tenga un poco más de rodaje ya escribiré unas líneas, pero de momento sí, decir que es el 5 con sus mayores defectos corregidos- es decir, excelencia sobre ruedas.

En definitiva…

Sí, le doy más a los videojuegos que antes. Con los Humble Bundles y Steam, la barrera de preferir Linux se reduce bastante y puedo jugar cómodamente en el PC, con el complemento de la PS3. Vienen otras sorpresas, claro… y quizá tendría que hacer otras intentonas de MESS, UAE, Frodo y demás, pero el tiempo es limitado y uno no puede dedicar tanto tiempo como quisiera a los aspectos lúdicos. Pero da gusto gozar de las maravillas modernas y recuperar los clásicos que se demuestran imperecederos.

Mi carta de navidad a los reyes

Mi querida Blackberry 9780 cada día está un paso más cerca de la muerte, y con ello se repite insistentemente la pregunta… ¿y cuando muera, qué?

Pues lo que quiero es:

  1. El formato Blackberry Bold. Quiero un teclado físico. He tecleado y tecleado en pantallas táctiles y sigue siendo un agobio. No sólo porque soy perceptiblemente más lento, sino porque es frustrante. Tampoco quiero un móvil enorme. Suelo llevar el teléfono en el bolsillo de los pantalones y no quiero chistes sobre estar contento de ver a nadie. La pequeña pantalla de mi Bold (2,44″) nunca me ha supuesto un impedimento para nada.

    Un slider QWERTY sería aceptable, pero es mucho, mucho más preferible “candybar”

  2. También quiero un touchpad táctil. Insisto, no me gustan las pantallas táctiles. El touchpad de la Bold es fantástico para seleccionar texto y mover cursor- cortar y pegar es un sufrimiento en una pantalla táctil, pero ágil y rápido con el touchpad.
  3. Android. Los sistemas operativos de Blackberry están muertos. Soy bastante de ecosistema Google (GMail, Google Calendar, etc. sobre Google Apps) y sus servicios cada vez van peor sobre Blackberry. No soy muy de apps, pero necesito el mínimo imprescindible
  4. Pero con atajos de teclado. Dada la falta de Androids QWERTY, no estoy seguro que estén muy soportados. Comenzar a teclear algo para buscar contactos desde la home, teclitas para responder y borrar rápido mails, espacio y shift-espacio para paginar en el navegador, t y b para saltar al principio y final de algo (¡imprescindible para páginas web!)… son cosas que te hacen mucho más ágil.
  5. Batería, batería, batería. Quiero un móvil que sólo necesite cargarse durante la noche. Dado que he pedido una pantalla pequeña (y un móvil comparativamente grande), no debería ser complicado. Soy fan de las baterías intercambiables, pero si el móvil puede vivir años y conservar la batería para aguantar un día de uso intenso, puedo renunciar a ello.

    Mi Blackberry inicialmente lo soportaba todo muy bien, pero mis patrones de uso (hasta 2h de uso intenso diario en el metro con mala cobertura, casa y trabajo con zonas de baja cobertura, etc.) pueden con todo

  6. RAM. Creo que cuando los móviles lleven 4Gb de RAM el mundo será un lugar mejor. Mi Netbook con 1Gb de RAM aguanta todo lo que le echen, lo cual me lleva a pensar que aún queda optimización de memoria en los sistemas operativos móviles (pendientes siempre de ver cómo tira Kit Kat en dispositivos de poca memoria). Quiero tener varias aplicaciones abiertas y muchas pestañas de navegador sin que se cierren por falta de memoria
  7. CPU/optimización. Como todo el mundo, quiero una experiencia de usuario suave. Sobre todo, cambio de aplicación rápido, navegador rápido y pocas pausas.
  8. Cámara. Con 5mpx, autofocus y flash me conformo. Pero que sea rápida. Quiero meter la mano en el bolsillo, sacar el móvil y sacar una foto ágilmente. Quiero un enfoque rápido. Mi gata no se está quieta.
  9. Conectividad. Pues yo con 3G y wifi mínimo ya hago
  10. Control remoto. El día que pueda instalar un software en los ordenadores que uso (Linux, básicamente) y cuando el móvil esté en la misma wifi (por 3G/bluetooth también molaría), me aparezcan las notificaciones del móvil en el ordenador, pueda hacer clic y tener control remoto del móvil, seré feliz (y compensará un poco deficiencias en el siguiente punto). Si el móvil comparte su sistema de archivos por SMB, de manera que puedo entrar en él desde el PC y gestionar archivos, ya será la leche.
  11. Mensajería instantánea. Quiero un sistema de mensajería eficaz. Pensado para móvil (notificaciones de entrega, robustez, estilo Whatsapp/BBM), pero multidispositivo (e.g. si atiendes una notificación en el escritorio, desaparece del móvil; paso fluido de conversación de dispositivo a dispositivo, etc.). Si es abierto y puedo tenerlo como plugin de Pidgin y en versión web, ya sería la releche. Por supuesto, un punto clave es que sea popular.

¿Tanto pido? ¿Nadie se animará a hacer un kickstarter para fabricármelo?

El cinco

Rockstar se mantiene fiel a su cita de revitalizar los inacabables debates sobre videojuegos; que si violencia, que si nueva forma de arte, que si el entretenimiento del siglo XXI… con su entrega periódica de la saga Grand Theft Auto. Hace unos días y tras treintaypocas horas de juego me acabé la historia principal del juego, con lo que me veo en el derecho de comentar mis impresiones aquí.

Pocos se preguntarán a estas alturas qué es el GTA. Pero por si acaso, lo repetiré aquí. El GTA es una saga de juegos surgida hace unos no despreciables 16 años en los que encarnamos a un criminal en un mundo abierto, con una historia que consiste en una serie de misiones a completar que nos permite ir avanzando el argumento. Yo me enganché en la primera entrega “3D”, el GTA III para PS2; me completé toda esa era, junto al Vice City y el San Andreas, pequeñas evoluciones que destacaron respectivamente por la ambientación y guión del Vice City (Miami, tomando como referencia El Precio del Poder de Brian de Palma) y un mundo gigantesco en el caso del San Andreas (el Liberty City/Nueva York del III y la Vice City/Miami del Vice City son ridículas comparadas con el condado de San Andreas/California del San Andreas, con su Los Santos/Los Ángeles, San Fiero/San Francisco y Las Venturas/Las Vegas, más una extensa campiña). Los 3D siguen al personaje principal en vista de tercera persona, mientras se mueve a pie o en diversos vehículos, peleando, disparando y saltando por, mayormente, las calles de una ciudad (algunos interiores hay, pero relativamente pocos).

El IV en PS3 volvería a Liberty City, pero por algún motivo, no me enganchó y casi no lo jugué. Pese al salto a la nueva generación de consolas, los gráficos me parecieron… grises y entre eso y un par de mecánicas de amigotes traídas del San Andreas, quizá un nivel de dificultad más alto y alguna cosa más, olvidé el bluray en un cajón.

Todo esto daría un vuelco con el V. Unos tráilers conseguidísimos, una historia que bebe de Heat sin vergüenza y la promesa de mejores controles me puso a tono para comprármelo el día del lanzamiento.

Y no me decepcionó. Quizá con un poco de trampa, rebajando el nivel de dificultad, el GTA V destaca por lo satisfactorias que son las escenas de acción. La conducción de vehículos, siempre un poco deficiente en anteriores entregas es mucho más… arcade y divertida. Y los tiroteos, oh los tiroteos. Los mecanismos de ponerse a cobertura, disparar, apuntar, cambiar de arma… son mucho más fluidos y sencillos de llevar a cabo. Apuntar con los controladores de consola es bastante frustrante respecto al uso de teclado y ratón de los shooters de PC, pero gracias a la acertada dificultad, participaremos en tiroteos grandiosos.

El juego asímismo introduce una novedad respecto a entregar anteriores. Los protagonistas anteriores (el silencioso del III, Tommy Vercetti del Vice City, CJ del San Andreas y Niko del IV) se ven reemplazados por el imaginativo trío protagonista. Comenzamos con Franklin, un pandillero muy similar a CJ que también se da cuenta que la ambientación de pandilleros es de lo más sosa, lo que nos lleva a Michael. Michael es un ex-atracador de bancos retirado que se verá arrastrado una vez más a una vida criminal, mayormente por eventos relacionados con Trevor, el último personaje en entrar, un demente que hacía equipo con Michael.

Trevor es el que más se ha enfatizado de todos- su locura, psicopatía y demás excentricidades dan mucho juego, hacen gracia y sirven de excusa (innecesaria) para la ultraviolencia propia de la serie. Pero mi favorito es sin duda, Michael- sin duda el personaje más multidimensional de la saga. Tras una exitosa carrera criminal, al lado de Trevor y otros variopintos personajes, se retira en sospechosas circunstancias con su mujer e hijos a una pequeña mansión en Beverly Hills. La dinámica de la riqueza le conduce a una familia inaguantable y a un vacío existencial que le lleva al psicólogo. Michael recorre los puntos entre el sarcasmo, la compasión, el instinto maternal y el crimen con elegancia y gracia, y sin duda alguna es el mejor interpretado del juego.

Pero es precisamente con Michael donde se exacerba el desequilibrio propio de la saga- Grand Theft Auto a veces es una peli muy seria de gángsters, a veces hace crítica social… y a veces se dedica a hacer chistes de caca-culo-pedo-pis. De hecho cuando los GTAs van en serio, lo hacen muy bien- las versiones GTA de Blackwater, el FBI… el comentario social, etc. pueden estar muy bien encontrados a veces, pero de repente da un volantazo hacia la caricatura y aunque a veces acierta, muchas veces descarrila completamente. El humor es además muy endógeno y poco accesible- chistes recurrentes que se remontan a las 14 entregas anteriores de la saga entre todas las diferentes versiones y un punto de vista bastante constante entre ellas, que puede gustar pero también aburrir.

El otro punto característico de los GTA es el famoso mundo abierto que popularizaron. En esta entrega se vuelven a superar una vez más- quizás el entorno sea menor en metros cuadrados que en el San Andreas, pero es desde luego más detallado y grandioso. Los gráficos son sencillamente espectaculares y es sorprendente comprobar hasta qué nivel se ha cuidado hasta el menor detalle. En esta ocasión hasta el entorno submarino está mapeado con horas y horas de trabajo añadiendo elementos que uno no podrá apreciar completamente aunque se dedicase siglos a ello. El monte Chiliad tiene teleféricos. Hay un campamento hippie. Una secta en las montañas. Infinidad de pueblecitos. Un sistema de autopistas en el que es fácil perderse.

Es, sencillamente inacabable y, como en entregas anteriores, la tentación de explorar se sobrepone muchas veces a que avancemos la historia.

Historia por otra parte que resulta interesante y que, aunque un poco predecible en ocasiones, hará que queramos llegar al final para ver cómo acaban.

Las misiones en sí acaban sufriendo de un poco de falta de variedad como en los anteriores, aunque se han esforzado más en dos aspectos en particular. Uno, los tiroteos, que son más complicados y elaborados que antes. Dos, los “heists”/golpes, misiones donde tenemos que planear asaltos, equiparnos, escoger entre dos alternativas, etc. que le aportan bastante novedad al limitado número de estereotipos de misión anteriores.

En fin, un juego imprescindible en todos los aspectos. La reducida dificultad lo hará accesible a todos- lo único que nos puede echar para atrás son las idiosincrasias de la serie, su humor infantil y otros puntos pueriles en lo que, por lo demás, es una obra de entretenimiento de primer orden.

Entretenimientos finales

Con cierta controversia por las posturas del autor del libro, llega a las pantallas la adaptación de El Juego de Ender- doble ganadora del Hugo y del Nébula, así que ciencia ficción de peso.

La cinta trata sobre la guerra con los insectores, unos alienígenas que estuvieron a punto de exterminar a la humanidad, para la cual el ejército terrestre se prepara adiestrando niños para la batalla, supuestamente por sus superiores capacidades cognitivas. El Ender del título es el superdotado de los superdotados y será seleccionado para encabezar la ofensiva.

Me leí el libro hace un cierto tiempo y tenía bastante curiosidad por ver qué tal la adaptación. El libro se balancea hábilmente entre trozos de acción y trozos de pensar, y ofrece al lector adecuados momentos de reflexión, pero personalmente a trozos me pareció algo inverosímil y complicado de adaptar.

La película supera estos miedos sin demasiados problemas- e incluso diría que es más creíble que el libro. Recorta correctamente para quedarse un pelo por debajo de las dos horas y no me parece que se tome unas libertades excesivas (el autor como siempre, no se queja pero presume de inadaptable) y supera la atípica estructura narrativa manteniendo un ritmo más que loable (el argumento tiene una distribución bastante peculiar).

En los terrenos típicos, los actores están bastante bien. Ninguno de los jóvenes actores chirría en ningún momento, lo cual es un gran logro en sí mismo. Asa Buttercup sorprende en el papel de Ender, mucho más difícil que su papel en Hugo en el que estaba meramente correcto. Harrison Ford y Ben Kingsley están bien en sus papeles, aunque se lamenta que el papel de Kingsley no aproveche su potencial (el libro sufre de lo mismo- podría ser un personaje excelente pero se queda en normalito).

Los efectos, música y otras categorías técnicas son intachables. Las escenas de acción son claras y épicas- es refrescante ver como últimamente se abandonan las escenas de acción que no dejan ver nada para que podamos disfrutarlas a tope, como en Pacific Rim.

Quizá lo único que queda a debate es la interpretación de la película, en la que hay lugar para el disenso. A primera vista parece que esta podría condenar los horrores de la guerra y la xenofobia, pero como toda buena historia de ciencia ficción que se precie, hay matices. No sin motivos, es una lectura recomendada de los marines norteamericanos, por ejemplo. Puede que algunos no transijan con la postura que interpreten adopta la película, pero para los demás, será fuente de interesante debate.

Entre ronquido y ronquido

Siguiendo la racha nipona, confiamos en los valores de Studio Ghibli y nos pusimos a ver Cuentos de Terramar.

Craso error.

La peli es una adaptación de una parte del ciclo de Terramar de la aclamada Ursula K. Le Guin (una de esas personas que collecionan Hugos y Nébulas), una serie de novelas y cuentos fantásticos, que según la Wikipedia va de cosas tipo Freud y Jung. Comentan que la sra. Úrsula había rechazado varias propuestas de adaptar Terramar, pero tras ver Mi Vecino Totoro de Miyazaki, aceptó. El problema es que el encargado fue el Miyazaki equivocado, su hijo Goro. A Hayao no le hizo mucha gracia que se encargase Goro y Úrsula… se desentendió del resultado, comentando que la película sólo coincidía con sus libros en el nombre de los personajes y poco más.

Malos presagios para la película que en efecto se cumplen. La cinta narra una historia muy plana en una ambientación aparentemente muy rica, pero de la que sólo recibimos pinceladas aquí y allá. El príncipe mata al rey en medio de una crisis que ríase usted de la económica, con plagas y decadencia mágica, y huye junto con el archimago Gavilán (sí, sí, el tío se hace llamar Gavilán). Luego pasan cosas malas, nos encontramos con personajes aparentemente muy importantes y entre ronquido y ronquido (el que escribe tuvo que luchar por mantener la consciencia), todo acaba al parecer bien.

Yo diría que esto es como todo lo malo de La Princesa Mononoke, quitándole las pocas cosas que la salvaban y alargándose hasta el infinito. La animación lleva el sello Ghibli, pero tampoco es que emocione como otras. Realmente hay pocos sitios por donde recomendar la peli… quizá si quiere uno ver todos los títulos de Studio Ghibli, pero poco más.

Dinosaurios niponizados

Ver una peli japonesa siempre es algo especial. Principalmente, uno nunca se entera de nada. Esto que puede parecer un grave problema, en general no lo es. Toda película se apoya en una cultura, iconografía y mitología, y los occidentales no entendemos las orientales (sospecho que los orientales entienden algo mejor las nuestras, pero tampoco completamente).

20th Century Boys no es una excepción a esto. Más al tratarse de tres películas que hilvanan un thriller conspiranoico futurista homenaje al rock. La trama creo que es algo así como unos amigos de la infancia descubren que “Amigo”, líder de una secta apocalíptica va siguiendo un plan que parece sacado de una historia inventada por uno de ellos. El grupo, por supuesto, tratará de detenerlo y salvar el mundo.

La cinta se basa en un manga serializado de Naoki Urasawa, que a muchos les sonará a chino, pero cuya creación Ginger (o Yawara) la judoka sonará a alguno más. Curiosamente, no es anime sino acción real- curiosa elección dado el nivel de efectos especiales que requiere el argumento (y que creo que se quedan cortos).

Como decíamos, no se entiende una mierda, pero esto tampoco detrae mucho del entretenimiento. Si que sabe algo mal que algún momento dramático nos hace más gracia que otra cosa, y nos queda la curiosidad de saber cómo percibirá la peli alguien que la entienda, pero aún así la peli tiene emoción, intriga y un ritmo bastante bueno. Las referencias al rock son bastante agradecidas; la canción homónima sirve de leit motif y recurso argumental, y el protagonista firma una curiosa tonadilla sobre sus croquetas favoritas también con cierta importancia para la historia (y malévolamente pegadiza).

El resto también es bastante japonés; las interpretaciones, puesta en escena y efectos son teatrales y caricaturescos, pero nada de esto se hace pesado ni doloroso y, francamente la peli entretiene. Así pues, recomendable para los que no tengan prejuicios. Siempre nos quedara, eso sí, la duda de saber cómo se percibe la peli si te enteras de todo.

Y por esta vez la gravedad tira hacia arriba

Que Alfonso Cuarón, cuya Hijos de los Hombres me parece un nuevo clásico de la ciencia ficción, se lance con una peli de dos astronautas flotando por el espacio me pareció una prometedora idea hasta que el nombre de Sandra Bullock apareció por ahí a la deriva.

A pesar de la adversidad, y tras el aluvión de críticas orgásmicas, uno tenía que valorar de primera mano este tour de force de la conductora de buses más famosa del cine.

Vaya por delante que sí, claustrofóbicos y mentes sensibles mejor abstenerse o ir con las biodraminas en mano. Es hora y media de inmersión espacial, donde no se sabe si son más opresivos los angostos recovecos de las estaciones espaciales o el casi infinito espacio. Los larguísimos planos secuencia de Hijos de los Hombres se multiplican con mil, con giros sin control y angustia máxima que te sumergen completamente en el vacío que hay ahí arriba.

Técnicamente, una vez más, la peli es perfecta de principio a fin. Es probable que más del 90% de los fotogramas sean mentira, pero una mentira imposible de discernir. La edición es absolutamente prodigiosa y la “fotografía” es absolutamente preciosista- a todos nos impactan esas imágenes que publica regularmente la NASA y en esta cinta, se recrean en amaneceres, luces de ciudades durmientes y demás juegos de puntitos luminosos.

A destacar también la música- salvo en el tramo final sutil pero efectiva, y perfectamente mezclada con el sonido que permite el espacio.

Con todo esto, y lo arriesgado de la premisa, sí, Gravity es por motivos propios una película que llega a lugares a los que ninguna otra película ha llegado antes.

¿Es, sin embargo, el no va más?

Creo que no. Prejuicios aparte, la Bullock ha dañado en exceso su credibilidad y aunque su interpretación está prácticamente libre de pecado, no acaba de darle verosimilitud a su personaje- lo que es una lástima porque la doctora Stone, pese a faltarle dos o tres pinceladas más de profundidad, tenía un potencial enorme. Clooney está meramente correcto.

A parte de esto, el guión es excesivamente secundario. El único giro es previsible y simplón, y la peli se queda en mero documental sin articular nada más que obstáculo tras obstáculo. Quizá sea mejor dejarnos llevar y envolvernos en las sensaciones primarias de angustia, desesperación, inmensidad y desolación, pero uno echa de menos alguna otra dimensión a la cinta.

Dicho esto, sí, hay que verla porque estamos ante una apuesta arriesgada que consigue tantos méritos que le podemos perdonar que descuide algún aspecto. Pero vayan preparados como para meterse en la madre de todas las montañas rusas.

Recopilatorios de grandes éxitos

Indudablemente, una de las asignaturas coco de cuando yo estudiaba informática era Compiladores- compis, para los amigos. No porque hubiese una tonelada de apuntes que memorizar, ni porque los profesores fuesen particularmente estrictos sino porque, simplemente, era tremendamente complicada.

Implementar un lenguaje de programación es seguramente una de las labores más complicadas que hay en el campo de la programación pura.  Tanto intérpretes como compiladores son fieras complejas que necesitan el uso de técnicas bastante sofisticadas para poder ser programadas efectivamente.

Tanto intérpretes como compiladores tienen que leer los programas escritos en su lenguaje- algo no trivial que en general se resuelve usando herramientas descendientes de los venerables lex y yacc; que en conjunto convierten una descripción de un lenguaje (un listado y definición de los átomos del lenguaje; palabras clave, separadores, sintaxis de literales, etc.; y una descripción de cómo se combinan para formar las estructuras del lenguaje) y que típicamente generan código en el que incrustamos nuestro compilador e intérprete.

Estas herramientas, básicas para el desarrollo, no son tampoco precisamente simples. Definir gramáticas de lenguajes es algo que se complica rápidamente- si no estamos hablando de lenguajes simples, no es sencillo encontrar una sintaxis y gramática no ambigua y, curiosamente, que no sea exponencialmente compleja de procesar. Lenguajes como C++ y Perl son notorios por sus particularmente enrevesadas gramáticas- en ambos casos son de tal complejidad que ellas mismas son, en cierta manera, lenguajes de programación.

Una vez podemos tenemos un mecanismo que nos permite pasar del código fuente de nuestro lenguaje a algo tratable por un programa (que es aún más complicado de lo que hemos descrito, ya que las herramientas comentadas, a parte de su complejidad teórica, nos plantean dificultades prácticas porque suelen ser, en general, bastante inaccesibles y poco amistosas), nos queda lo peor.

Los intérpretes deben, como su nombre indica, interpretar el código ya dispuesto en una estructura tratable (aunque probablemente compleja) y ejecutarlo. Para ello, debemos coger la representación del código e ir ejecutándolo paso a paso igual que haríamos si quisiesemos verificar la ejecución del código manualmente. Esto tampoco es sencillo, ya que características del lenguaje tales como los distintos alcances de los identificadores, los sistemas de objetos, la comprobación de tipos, etc. son en general problemas de por sí complejos.

Pero quizás el hueso más duro de roer es la compilación. En un problema algo relacionado con la traducción de lenguaje natural, un compilador debe coger el código una vez procesado y presentado de una manera estructurada y convertirlo en código de otro lenguaje. Esto, tal como es la traducción de lenguaje natural, es harto difícil.

En general, los compiladores suelen ser de lenguajes de mayor nivel a menor nivel; solía ser que los lenguajes se compilaban directamente al lenguaje ensamblador propio de las CPU- lenguaje ensamblador que es mucho más simple, poco expresivo y limitado que la mayoría de lenguajes de alto nivel, y por tanto esta traducción es compleja- en cierta manera debemos coger Dublineses y explicarlo de manera que un niño de cuatro años pueda entenderlo perfectamente.

En estos casos, la cosa se suele complicar mucho más porque una implementación naíf de un compilador a ensamblador suele redundar en programas que al ejecutarse son espectacularmente ineficientes. Conseguir ejecutables eficientes es un problema completo en sí mismo sobre el que se han escrito toneladas de libros.

Sin embargo, recientemente son más habituales los compiladores que compilan lenguajes a cosas que no son ensamblador- por diversos motivos entre los que destaca que un compilador a ensamblador sólo es útil para una familia de CPUs, y pese a que la familia x86 de Intel y los ARM copan la mayor parte del mercado, sigue habiendo muchos otros procesadores en uso hoy en día. Por otra parte, plataformas como la máquina virtual Java, LLVM o incluso Javascript también son populares como destinos de los compiladores- en el caso de Java o LLVM por ser más simples para la generación de código sin sacrificar eficiencia, y en el caso de Javascript, por ser un destino particularmente útil ya que nos permite ejecutar el código compilado en un navegador.

Tanto la JVM como la LLVM han sido diseñadas especialmente para este propósito, con lo que tienden a simplificarnos el proceso de compilación. En el caso de Javascript, pese a estar pensado con otros propósitos, proyectos como GWT o Emscripten han hecho grandes esfuerzos para hacer funcionar compiladores sobre Javascript. Mozilla incluso ha lanzado la iniciativa asm.js para definir un subconjunto de Javascript que sea práctico como plataforma a la que compilar de una manera eficiente.

El proceso no se queda aquí, ya que una vez tenemos un lenguaje funcional con intérprete o compilador, siempre hay un interés en acelerarlo- tanto el proceso de compilación como la ejecución de los programas. Una vez más, se trata de un área complicada y sutilezas- se han llegado a técnicas extremadamente sofisticadas que incluso “aprenden” de la ejecución del programa y modifican su funci0namiento para adaptarse y mejorar “en vivo”.

Como decíamos, una de las áreas de la informática pura más complejas y duras. Si bien en inteligencia artificial, bases de datos, proceso de imágen, etc. existen problemas duros, no suelen ser tan duros en cuanto a programación, sino a las matemáticas y otras áreas no estrictamente informáticas que tocan. También en programación empresarial existen sistemas extraordinariamente complejos, pero en este caso suelen serlo por el tamaño y la cantidad de entidades y conceptos interactuando entre sí del negocio. Pero son los compiladores probablemente una de las hazañas de programación más sofisticadas que hay y, así mismo, primordial para la programación en sí.