En su libro "Programming Perl", Larry Wall dice:
We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris.
Que, traducido, viene a significar:
Te animaremos a desarrollar las tres grandes virtudes de un programador: pereza, impaciencia y hubris.
En el glosario del mismo libro podemos encontrar más detalles:
Más allá de la broma y de lo ajustado o no que esté a la realidad, me da la impresión de que un comentario de ese tipo encajaría mucho peor en un libro moderno. No porque haya nada malo en ella ni porque hoy los libros sean más serios, sino porque me da la impresión de que el propio concepto de lo que es un "programador" ha cambiado.
La imagen del programador que se trasluce de las definiciones de Larry Wall es, en cierto modo, la de un aficionado: una persona que programa por motivos personales, principalmente para sí misma, para solucionar sus propios problemas y facilitar su propio trabajo; y que comparte el resultado de ese trabajo también de modo personal.
No es una visión exclusiva de Wall, puede verse también en la famosa frase de Eric S. Raymond:
Every good work of software starts by scratching a developer's personal itch.
Que, en español, más o menos dice:
Todo buen trabajo de software comienza rascando la picazón personal de un desarrollador.
Creo que no es casualidad, sino que forma parte de la mentalidad de una época, de esa ética hacker que describe el filósofo Pekka Himanen en el libro "La ética del hacker y el espíritu de la era de la información".
Sin embargo, me da la impresión de que esa mentalidad, en general, ha cambiado.
Creo que, hoy en día, el arquetipo al que aspiran los programadores es más el del profesional eficiente que el "hobbista" apasionado. Lo cual es lógico y natural: la programación es un amplio campo laboral en expansión, y las empresas de desarrollo se han multiplicado exponencialmente desde la época en que Wall y Raymond dijeron aquello. Ahora la programación es una profesión, sometida dinámicas de mercado bajo criterios de productividad y beneficio.
Es el mismo camino que siguieron otras muchas ocpuaciones: los primeros automovilistas eran consumados mecánicos (estaban obligados a ello) que trasteaban con pasión los motores de sus coches. Cuando el automóvil se convirtió en un bien de consumo masivo, llegó el momento en que la mayoría de los automovilistas desconocía como funciona su coche, mientras que la mecánica se profesionalizó progresiva y naturalmente.
Naturalmente, estoy hablando de "arquetipos", de la idea general que tenemos de cómo debe ser algo. De lo que nos viene a la cabeza al imaginar un informático o un mecánico, por ejemplo. Eso no quiere decir que no sigan exitiendo montones de aficionados a la mecánica o la programación que disfruten con pasión de su hobby (probablemente, incluso más que antes, en números absolutos).
Sin embargo, en cierto modo, y sintiéndolo por Pekka Himanen, la ética protestante parece haber acabado venciendo a la ética hacker.
Hace algún tiempo que JJ Merelo me regaló un ejemplar de su libro "Paseos por Venecia".
En la contraportada dice que "Si te lo encuentras alguna vez (a JJ), es mejor que no le digas 'Háblame de Venecia'", y entiendo perfectamente por qué: JJ está enamorado de Venecia.
"Paseos por Venecia" es una guía de viaje sincera, escrita a pie de calle, observando los detalles de cada fachada, buscando el fondo de cada calleja, deteniéndose a mirar cada rincón; se nota en cada página que está escrita por alguien que ama la ciudad y que la ha visitado a menudo.
Es el equivalente a ir acompañado por tu cuñado, ese que vive desde hace años allí y se conoce los mejores bares y todos los palazzos, y que está empeñado en contarte la historia de todos los puentes y las leyendas de todos los monumentos. Con la diferencia de que, en el caso de tu cuñado, no puedes levantar la vista del párrafo y dejar un marcapáginas.
Un aspecto curioso, que salta a la vista a todo lo largo de la guía, es que es un libro sobre Venecia escrito desde Granada. No me refiero en el sentido físico, sino en el discursivo: el libro continuamente busca los puntos de contacto entre las dos ciudades y, a menudo, cuando habla de Venecia dice "allí", y cuando dice "aquí" se refiere a Granada. No me parece mal, pero a mí me saca un poco de ese estado mental de estar allí, recorriendo las calles, que sostiene el conjunto del libro.
El que sea un libro escrito desde el amor a la cuidad no quita que también esté escrito desde el respeto a su identidad: Al contrario que muchos otros autores (quizás la mayoría), J.J Merelo habla de la Venecia que existe realmente, no de una Venecia idealizada ni de una excusa para proyectar los sentimientos y meditaciones del propio autor. Que no es algo que esté mal, sin duda, pero sería otro libro.
En este sentido, su estilo descriptivo le debe más a Marco Polo (lo que suena bastante lógico) que a la tradición romántica del Grand Tour que tanto contribuyó a crear la imagen popular de la ciudad.
La guía trata de poner en contexto cada elemento con su entorno y su historia aunque, eso sí, se trata de una suerte de historia diacrónica, en la que, en ocasiones, es difícil ubicar claramente a qué periodo se refiere cuando habla del pasado de la ciudad; de todos modos, como Venecia está siempre orbitando insistentemente en torno al atractor extraño del Renacimiento, la verdad es que no importa tanto.
A pesar del formato narrativo, que va describiendo la ciudad a medida que recorre sus calles, no es un libro de pequeño formato que sea fácil de llevar encima mientras visitas la ciudad (salvo en su versión electrónica, imagino); supongo que hay demasiada Venecia como para condensarla en una guía de bolsillo.
Quizás el que haya que decir esto sea buena señal, porque significa que ya hemos empezado a olvidar lo peor.
Durante décadas, la banda terrorista ETA asesinó, secuestró y robó, bajo la pretendida justificación de luchar en favor de una independencia política frente a la ocupación de Euskadi por parte de un estado español invasor.
Fueron décadas de miedo y gritos, de sangre y lágrimas, de muertos y silencio.
Sin olvidar, naturalmente, todas las veces que el estado demostró ser un traidor a su propia legalidad, convirtiéndose en algo aún peor que lo que decía combatir; organizando, apoyando y justificando la "guerra sucia", los secuestros, las torturas, los asesinatos, los malos tratos, la impunidad y el resto de crímenes contra la democracia y sus propios ciudadanos. Porque olvidarlo sería cínico.
Durante esas décadas, una inmensa mayoría de la población soñaba con el día en que los terroristas abandonaran las armas y abrazaran las vías democráticas. Un día en que no hubiera miedo, sangre ni muertos; sino esperanza, urnas y candidatos.
Hasta que, por fin, hace doce años, ETA anunció el "cese definitivo de su actividad armada".
Así que, si hoy en día se presentan en una lista electoral "44 condenados por su relación con ETA", eso no es un motivo para lamentarse; es un motivo de celebración, porque significa que lo conseguimos.
Como país, nación, o cultura, como conjunto de naciones, o vecinos, o como lo que sea que queramos o decidamos definirnos colectivamente.
O, simplemente, como fracción de la humanidad. Lo conseguimos.
Conseguimos dejar atrás gritos, lágrimas y silencio; para dar la bienvenida a mítines, votos y debates.
Porque esto, precisamente esto, era lo que deseábamos.
El próximo lunes sacan a José Antonio Primo de Rivera de la basílica del Valle de los Caídos, y se lo llevan al cementerio donde está enterrada su familia.
Esteban González Pons, Vicesecretario general Institucional del Partido Popular, opina que es un acto electoralista del Partido Socialista Obrero Español, encaminado a obtener votos. En televisión, ha dicho:
"Franco fue exhumado en unas elecciones, José Antonio en otras y, para las próximas, no sé si les queda alguna exhumación que proceder."
Supongo que Esteban ha olvidado (o ha querido olvidar) que, con una cifra estimada de más de 4000 fosas comunes (unas 2600 identificadas), en España aún nos faltan decenas de miles de exhumaciones por hacer.
Si, de las cinco palabras que tiene el título de este post, sólo entiendes dos, lo más probable es que el resto del post que viene a continuación no te interese absolutamente nada.
Las personas que trabajamos con el sistema de control de versiones git somos como chimpancés inquietos, porque nos pasamos el día cambiando de rama.
Saber en qué rama de un proyecto estás en un momento determinado es muy útil y, de hecho, todos los IDEs tienen alguna forma de indicarlo, al igual que muchas herramientas de ayuda a la programación.
Y, dado que el terminal es una herramienta prácticamente indispensable en programación, también hay aplicaciones, como la espectacular Powerline que tienen diversas opciones para mostrar la rama actual en la línea de órdenes.
Mi aproximación personal a este último aspecto es mucho menos sofisticada y bastante más artesanal, y consiste en hacer que el propio prompt de bash indique el nombre de la rama cuando el directorio actual está bajo seguimiento de git; además, el color con el que se muestra ese nombre varía según la rama (el nombre de las ramas "main" y "master" usa un color, las ramas "development" y "dev" usan otro, y todas las demás otro distinto).
El efecto final es más o menos el siguiente:
Como se puede ver, cuando el directorio actual está dentro de un repositorio, el prompt reemplaza el tradicional usuario@host:
por el nombre de la rama actual en el color que le corresponda.
Todo esto se hace mediante este simple código:
declare -A BRCOLOR=( [master]="\e[31m" [main]="\e[31m" [development]="\e[32m" [dev]="\e[32m" ) REST_OF_BRANCHES="\e[34m" DEFAULT_COLOR="\e[0m" PS1="\$(\ BRANCH=\$(__git_ps1 '%s') if [[ \${BRANCH} = '' ]]; then echo -e \"$PS1\" else COLOR=\${BRCOLOR[\${BRANCH}]} if [[ \${COLOR} = '' ]]; then COLOR=$REST_OF_BRANCHES fi echo -e \"\[\${COLOR}\]\${BRANCH}>\[${DEFAULT_COLOR}\]\w\$ \" fi)"
Los colores se asignan mediante el array asociativo BRCOLOR
, que contiene nombres de ramas como clave (los nombres que se ven entre corchetes) y códigos de color ANSI como valores (entre comillas); de este modo, la rama llamada "master" usará el color "\e[31m" (rojo), etcétera.
Las ramas cuyo nombre no esté en BRCOLOR
, usarán el color definido en REST_OF_BRANCHES
; mientras que DEFAULT_COLOR
, por su parte, es el color por defecto que usa el terminal (a causa de cómo se usan los colores en un terminal, hay que volver a asignar el color "normal" después de la cadena coloreada).
Si quieres usarlo, solo necesitas copiar el código en tu archivo .bashrc
y, la próxima vez que inicies una sesión en tu terminal, tendrás activo el nuevo prompt.
Puedes personalizarlo cambiando o añadiendo nombres de ramas en el array BRCOLOR
y asignándole el código de color que prefieras.