Orden y concierto

Programar es controlar. Ejercer de comandante de una máquina cabezota dándole un fin y los medios (en forma de instrucciones) para alcanzarlo. Ponemos orden en los pensamientos de esas entrañables calculadoras XXL (y en no pocas ocasiones XXX) y las empujamos a trabajar en nuestro mejor interés. Ahora lo llaman arte o artesanía, antes nos conformábamos con considerarlo ingeniería. No hay mucha magia detrás del asunto: se les habla en un lenguaje que entiendan, y suelen obedecer. Escribir software consiste en traducir una serie de instrucciones (un algoritmo) a un lenguaje de programación, para su posterior transformación en código ejecutable por la máquina. Dead simple, right? Pues a veces sí, pero a veces no.

Si el algoritmo que estamos aplicando es trivial, y se limita a una serie de pasos dados en un orden estricto, la traducción a código ha de ser igualmente directa. Pero, ay amigos, el software tiende a modelar problemas de la vida real, y en la vida real raramente son tan sencillas las cosas. Una estrategia estándar para atacar un problema complejo en descomponerlo en problemas más pequeños, fáciles (o más fáciles al menos) de solventar. La combinación de todas esas soluciones es la solución al problema original. Y de eso quiero charlar un rato hoy, de la combinación de procesos en la resolución de problemas complejos.

Resolvamos esos problemas…

En Internet no hay un aquí

Vamos a ver como oriento el post para no herir sensibilidades con el tema de hoy. Y es que nunca debería uno hablar de fútbol, política o patria si no tiene ganas de lidiar con las más bajas pasiones de sus contertulios. Pero oye, no le va tan mal a Reverte opinando sobre estos y otros tabúes del dominio de lo muy subjetivo, así que from lost to the river. Hoy, Internet y nacionalidades. O nacionalismos, o patrias, o como quieran ustedes llamarlo. ¿Cómo casan los ancestrales sentimientos de pertenencia territorial con la naturaleza global de la emergente Red de redes? Y es más, ¿cuánto sentido tienen en este nuevo contexto?

Esto no va acabar bien…

Show me your stuff

Suelo usar este blog para dar salida a todo tipo de disquisiciones sobre el sexo de las startups o a qué huele su tecnología. Permitidme hoy ponerme algo más terrenal y proponer algo. Quiero (queremos, más sobre eso luego) montar una reunión, o varias. De frikis para frikis, pero diferente. Hoy, y sin que sirva de precedente, me dejo de pajas mentales. Y sí, he dicho paja, al fin y al cabo es mi blog y me lo follo cuando quiero. Ups, me estoy pasando ya… voy a aplicar aquello que me decía mi padre de “habla bien, joder, que no cuesta una puta mierda”… En fin, al turrón.

Reuniones, decía. Vamos a contextualizar todo esto un pelo si no os importa. Antes de Ducksboard, yo nunca había sido de pasarme por eventos de desarrolladores u otros. El Meetup Group de Python de Barcelona en un par de ocasiones y ya. Vivía ajeno a la fiebre de los eventos. Pero entonces fundamos Ducksboard, y cuando empiezas algo lo suyo es darlo a conocer, y empecé a pasarme por encuentros y más encuentros a hablar del proyecto. Con todo, en estos últimos dos años me he paseado por una buena cantidad de reuniones de desarrolladores o startuperos. Y ahora, con conocimiento de causa, puedo afirmar que me generan sentimientos encontrados.

Sigue leyendo…

El que muere paga todas sus deudas

Toma título lapidario, de la pluma del más funesto William Shakespeare nada menos. Que no se disparen todavía las alarmas, no va a tratar el post sobre la muerte de nadie, faltaría más. Pero sí sobre un factor que puede acelerar el fracaso de un proyecto tecnológico. Un fenómeno que toda acometida técnica de cierto calado va a enfrentar tarde o temprano. La crisis económica de los geeks de a pelo, su fin de ciclo particular. En fin, hablamos de la deuda técnica. Para los no puestos en el tema, la palabra “deuda” ha de ser indicativa de que no es éste un asunto baladí. Vaya si no lo es…

¿Deuda? Esto parece el telediario…

El diablo está en los detalles, Python edition (y II)

En mi anterior post (y con “anterior” quiero decir “de hace más de un mes”, la frecuencia de mis entradas va a quedarse lejos de ser legendaria…) estuve comentando algunas características de Python que me parecían especialmente útiles. Herramientas como las comprensiones de listas y los generadores multiplican la productividad y hacen que el lenguaje sea compacto y legible. Un 2×1, como en los anuncios de detergente. Pero se me fue un poco de largo, y dejé fuera del mismo varias características igual de interesantes que quería explicar también. Si os parece bien, hoy echaremos un ojo a alguna más. Al final sólo a una más: ¡los decoradores!

¿Me vas a amueblar la casa?

El diablo está en los detalles, Python edition

No es un secreto que Ducksboard está implementado en Python. Hemos dado alguna que otra charla sobre el producto, y en ellas hablamos de la elección de tecnologías y otras hierbas. El decantarnos por Python no nos llevó demasiado trabajo a Jan y a mí. Es un lenguaje que conocíamos bien (Flumotion está escrito en Python, y de ahí veníamos), y nos parecía razonablemente decente (no es Lisp, pero tampoco es PHP) y adaptado a las necesidades del proyecto. En alguna de esas charlas nos han preguntado que por qué no usamos Javascript y Node.js, o Ruby, o Erlang, o Go, o cualquier otro lenguaje / plataforma.

Bien, esa pregunta tiene su jugo. Justificar el uso de una tecnología frente a otras puede derivar rapidamente en un flamewar de libro, lo que suele aportar poco y poner a la gente de mal humor. Como la política, ¡o el fútbol! Mal rollo. Y aquí no quiero malos rollos, soy un tío positivo. Así pues, he optado por no responder atacando las flaquezas de otros lenguajes, sino subrayando algunas de las pequeñas cosas que me hacen feliz en Python. Vamos, que paso de explicar la ponzoña de lenguaje que es Javascript, y en cambio prefiero centrarme en esos detallitos que hacen que Python mole bastante más. Sin acritud.

A ver qué tiene ese Python que no tenga Javascript…

Journey

DISCLAIMER!

Hace tiempo que este post me ronda la cabeza. Me he resistido porque una cosa es hacer una review de un juego, y otra destriparlo y spoilearlo a muerte, como estoy a punto de hacer. Pero es algo que tenía dentro y necesitaba hacer. Espero sepa usted comprenderme, estimado lector ;)

Si no has jugado a Journey y piensas hacerlo, leer este post sería una idea horrible. Una idea HORRIBLE.

Si no has jugado a Journey y no tienes intención de hacerlo, este post no te va a decir mucho. Pero en fin, es seguro leerlo.

Si has jugado a Journey, lo que sigue es un intento de plasmar lo que sentí jugándolo, que fue mucho. Es un juego abierto a la interpretación de cada cual, ésta sólo es la mía, una más.

Se han vertido ríos de tinta sobre la capacidad narrativa de los videojuegos. Que si se aprovecha, si no, si aporta algo, si el medio está maduro o no para ofrecer tramas más trabajadas, más trascendentes. Lo cierto es que el juego súper-ventas típico se mueve en los niveles de narrativa de un blockbuster hollywoodiense (y estoy pensando en Transformers…). Y generalmente da igual, en un videojuego lo principal es la mecánica jugable, que es lo que hace el juego entretenido, disfrutable. El guión suele ser una excusa, aquí lo importante es que el jugador “viva” la aventura, la disfrute desde dentro. Lo que sí suma a ese noble fin es la ambientación: si el objetivo es que el jugador se sienta parte del juego, hay que hacer lo máximo para generar esa ilusión. Y lo cierto, si me preguntan a mí, es que no se ha avanzado demasiado en ese aspecto en mucho tiempo.

Hubo una oportunidad clara de mejorar la ambientación en los videojuegos con el salto a las 3D y el soporte CD. Al fin y al cabo, es difícil ofrecer un entorno creíble con píxels, paisajes 2D y música “chiptunera“. Las 3D, con sus ángulos de cámara, su perspectiva y su ilusión de profundidad, y el CD, con esas bandas sonoras peliculeras y esos diálogos hablados, cambiaron el panorama. Ahora los juegos podían ofrecer entornos que engañaban lo suficiente a nuestros sentidos como para ser creíbles. Más cercanos a una película. Y ciertos géneros hicieron buen uso de esa recién adquirida habilidad, como el survival horror. Resident Evil o Silent Hill consiguieron crear tensión real en el jugador, provocar una emoción concreta, más allá del gusanillo del reto, común a los buenos juegos. Bien, y a partir de entonces, ¿que mejoras siguieron en la ambientación y la carga emocional en los videojuegos? Pues pocas, la verdad.

¿Te interesa? Sigue leyendo