sábado, diciembre 22, 2007

No hay gen para el espíritu humano

Lo repetiré de nuevo, esta vez con enlace:

No hay gen para el espíritu humano.

A veces se nos olvida...

Enlaces

Triste pero cierto...

Jeff Atwood pega de nuevo en el clavo:

Coding Horror: Nobody Cares What Your Code Looks Like

Sin embargo, me ha gustado mucho que ese "nobody" hace referencia a none of your customers, o a none of your users, incluso diría que a none of your bosses, pero que sí nos importa a nosotros, programadores. Que de hecho, es nuestro trabajo:

Sure, we programmers are paid to care what the code looks like. We worry about the guts of our applications. It's our job. We want to write code in friendly, modern languages that make our work easier and less error-prone. We'd love any opportunity to geek out and rewrite everything in the newest, sexiest possible language. It's all perfectly natural.

The next time you're knee deep in arcane language geekery, remember this: nobody cares what your code looks like. Except for us programmers. Yes, well-factored code written in a modern language is a laudable goal. But perhaps we should also focus a bit more on things the customer will see and care about, and less on the things they never will.

Vale.

viernes, diciembre 21, 2007

Aumenta la entropía en el Metro de Madrid

Leo con asombro en una noticia publicada por Madrid Digital en la que se informa de que
...en las cercanías del Metro han aparecido carteles (foto) en los que se pide a las personas solidarias con los trabajadores en huelga que pongan todas las reclamaciones que se puedan en las taquillas del metro, y que “ensucien y coloreen nuestro magnífico metro. Cuando ganen, los y las compas ya se encargarán de dejarlo todo en perfectas condiciones”, aclaran.
Los que aclaran (¡qué ironía lo de aclarar!) parecen ser los sindicalistas de CNT y CGT. Ya comenté en un post anterior lo que opinaba de esa solidaridad a la que apelan. Sin embargo, lo que ya me ha parecido alucinante es leer que
Ayer, en la estación de Colombia -línea 8- se tiraron botellas en el andén. En la de Callao se vació un extintor y se esparcieron huevos y grasa por el suelo. En Canillejas se echaron al suelo cristales rotos y basura, motivo por el cual la estación tuvo que cerrarse durante media hora para proceder a su limpieza. // Además, en la estación de Manuel Becerra se tiraron cajas de cartón. En la de Argel, aparecieron pintadas. La noche del miércoles al jueves, en la estación de Cuatro Caminos se tiene constancia de que se vació un cubo de tinta negra en un pasillo. // Las mismas fuentes de la compañía aseguraron que la pintada de veinte metros cuadrados que apareció el miércoles en la estación de Embajadores ya se había limpiado.
¿Son esas las medidas de presión que pretenden utilizar? ¿Llenar de basura el metro? ¿Se dan cuenta de que además de a los que pretenden perjudicar están perjudicando a los mismos "solidarios" a los que apelan? Me da la sensación de que hay otras maneras de presionar a los empleadores. Ya apunté algunas de ellas en el post al que me refería antes. Si sus reivindicaciones son razonables, que busquen el apoyo de la gente apelando a su razón... Me da en la nariz (!) que se siguen utilizando los medios sindicales de finales del XIX. Hoy por hoy, tienen multitud de medios en los que presentar sus peticiones, Internet, blogs, canales de televisión, cadenas de radio... ¿Por qué no prueban a hacer un debate público entre patronal y trabajadores o sus representantes? ¡Que se sienten a negociar! ¡Qué hagan algo! Dejemos que este tipo de acciones, propias más de la pataleta de un niño, pasen a un segundo plano, y sean lo que deben ser, la ultima ratio, y dejar que la razón, la negociación, la palabra, y el entendimiento sean la prima ratio.


Adios no, ¡hasta pronto!

jueves, diciembre 20, 2007

Del ámbito de los problemas

Hoy por casualidad, buscando información sobre la huelga que están llevando a cabo los trabajadores de las empresas concesionarias de la limpieza del Metro de Madrid, me he pegado de bruces con un ¿periódico? llamado "Rojo y Negro". El nombre es llamativo porque los dos colores transmiten un montón de sensaciones, pero también porque son los colores de la Confederación General del Trabajo, o CGT. No puedo evitar pensar que la "información" publicada esté sesgada dado su origen, así que más que información, la llamaré opinión, por no llamarla directamente propaganda, que me parece un término demasiado duro porque les supongo cierta intención informadora, aunque sea de sus opiniones e ideas.

Se hacen ciertas preguntas en la noticia:
¿Si hay Huelga, porqué hay algunas estaciones que parecen más limpias que un día laborable cualquiera? ¿Quién ha limpiado esta estación, si hace diez minutos estaba sucia, y no está previsto que se limpie hoy por los servicios mínimos?
Y a continuación, se contestan:
La respuesta a estos interrogantes nos la han servido en bandeja Metro de Madrid y las cuatro empresas concesionarias afectadas por la Huelga (Valoriza Facilities, SAU; Clece, SA; Eurolimp, SA y Ferrovial Servicios, SA): ninguno sabe nada. Sin embargo la realidad es que al menos otras dos empresas de servicios más, de las muchas que tiene contratadas Metro de Madrid para otros cometidos, están mandando brigadas de entre 3 y 6 operarios a limpiar estaciones, escaleras de bocas de Metro, etc.
Cómo no, el derecho de huelga ha sido vulnerado, y también saben quiénes son:
Estamos ante la más grave vulneración del Derecho Constitucional de Huelga que una empresa puede cometer, pero en este caso es más grave aún, ya que son entidades públicas, las propias instituciones y sus responsables políticos los que están pisoteando los Derechos de los Trabajadores.
(Todas las negritas y las itálicas en las citas son mías). O sea, Brigadas Pisoteadoras y Vulneradoras de Derechos Constitulacionales.

Si no lo entiendo mal, que una empresa sea concesionaria de otro, significa que una empresa subcontrata los servicios de otra para externalizarlos, y no asumir sus costes, consecuencias o lo que sea. Los angloparlantes utilizan un término divertido: outsourcing. Si tampoco lo entiendo mal, los trabajadores que están en huelga no son los trabajadores de Metro de Madrid, sino más bien los trabajadores de las empresas concesionarias, en este caso Valoriza Facilities, Clece, Eurolimp y Ferrovial Servicios. Entiendo que el problema lo tienen realmente estas empresas, digo yo.

Por otro lado, si Metro de Madrid ve que por un motivo u otro las empresas concesionarias se ven imposibilitadas para ofrecer sus servicios, me parece que está en su derecho de contratar (temporalmente o no) a otras empresas de servicios que le suplan lo que la Banda de los Cuatro no suple. El problema que tiene Metro de Madrid es que tiene que garantizar cierta higiene en sus instalaciones, y debe cumplir con el servicio que ofrece. El problema que tiene la Banda de los Cuatro tiene que ver con sus empleados, y las consecuencias que le puede ocasionar la huelga, sea porque Metro de Madrid rescinda sus contratos, o por pérdidas económicas o de otro tipo. En todo caso, intentar extender el problema más allá de sus límites, es mezclar churras con merinas, intentando obtener algún tipo de beneficio por ello.

También apelo aquí a la responsabilidad de los usuarios. Si hace tres días apenas había basura y hoy la basura se acumula en todas las esquinas (es especialmente visible en las escaleras), es que alguien ha tirado las cosas que antes no estaban... Y sí, es verdad, parte de la basura es inevitable (la gente pierde piel, pelos, lo que llevamos en los zapatos y dejamos por ahí, polución que cae por las rendijas...), pero hay otra que no. ¿Es lógico pensar que a la gente que reparte el 20Minutos, el Qué o el ADN en las entradas se le han caído un montón de periódicos escaleras abajo, y que luego los flujos de aire y eso los llevan hasta las esquinas? ¿Se estrelló un camión de patatas Matutano y las bolsas, vacías porque los pájaros supieron beneficiarse, han acabado movidas por los azares del viento debajo de las papeleras? ¿Ha decidido el profesor Karamba, gran ilustre vidente africano, publicitarse dejando que sus octavillas decidan por si mismas el mejor sitio que ocupar, en una anarquía mercadotécnica?

No estoy en contra del Derecho a la Huelga. Siempre y cuando, las consecuencias de la huelga la sufran los empleadores, no los receptores de los servicios. Que dejen de limpiar los despachos de los directivos (lo siento por los directivos). Me parece bien. Que no limpien las oficinas de Metro de Madrid (lo siento por los trabajadores de Metro de Madrid...). También me parece bien.

Pero cuando se busca que una huelga haga más presión sobre el empleador subcontratando a los usuarios del servicio para aumentar la presión, tanto si quieren como si no.

Y cuando se busca que dicha huelga se haga más pública saliendo en multitud de medios gracias a que la gente empieza a quejarse.

Y cuando se da la coincidencia de que dentro de unos meses tenemos elecciones generales (también en Madrid).

Y cuando caes en la cuenta de que los trabajadores de las empresas concesionarias (en su derecho) dejan de limpiar en el Metro y no en el resto de empresas servidas por las empresas subcontratadas.

Cuando suceden esos casos, sí me da la sensación de que se vulneran derechos. Los mios.

miércoles, diciembre 19, 2007

Noooooooooooooooo... no funciona internet

Demasiado !!

jueves, diciembre 13, 2007

Tag cloud

Me ha sorprendido (¿o debería decir que no me ha sorprendido?) comprobar que en la nube de etiquetas de TusTextos.com
las palabras que más pesan son: "sentimiento", "amor", "dolor" y "tristeza", a parte de las esperables "poesía" y "cuento".

miércoles, diciembre 12, 2007

Mi padre

Hoy hace un año que falleció mi padre...

martes, diciembre 11, 2007

De exploración por ahí encontré...

Regina ExLibris sobre literatura infantil

A la caza de niños-lectores - Blogs 20minutos: Regina ExLibris

Buenos consejos para estas fiestas. Sé que son buenos porque ¡me los he leído todos! (en mi ya lejana infancia)...

Modelos en arcilla

Me ha gustado mucho la comparativa que ha hecho Doods entre la industria del automóvil y la producción de software. Producir software no es como esas líneas de dedicados robots y humanos especializados, en las que es fácil determinar cuántos coches (idénticos, bien definidos...) salen por hora de la factoría. En realidad, es más parecido al tipo que se encarga de hacer el modelo en arcilla:
"Have you seen a car ad that shows a design studio with a clay mock-up? That’s like software development. The guy on the factory floor can easily know how long it takes to assemble an automobile. It’s much more difficult for the guy sculpting clay to predict how much work and how many revisions it will take to get to the final design".

Esto confirma la idea acerca de la auténtica esencia del software: la información y el conocimiento. De hecho:
"Software development is an exploration. It’s learning about the problem domain, the customer’s needs, and how a solution can be realized with the available resources. Learning requires space and time for experimentation and failure".

¡Es algo fundamental! ¡Nadie aprende por acertar! Si ahora aciertas, es porque antes has fallado de muchas maneras distintas. ¿Por qué no aprendemos a fallar? Creo que tiene que ver con que nos han educado para esperar un castigo si hacemos algo "mal"... No hay que castigar si uno se equivoca... Hay que castigar cuando uno se equivoca reiteradamente. Y ni siquiera en esos casos. Defiendo en esos casos una buena herramienta: enseñar.
Y ya para terminar, categórica, la auténtica definición de "manufactura del software":
"Software manufacturing, at its least adorned, is a file copy operation".

Ahí queda eso [las negritas son mías].

lunes, diciembre 10, 2007

Declaración de variables al principio de un método

Cada vez estoy más a favor de declarar las variables justo antes de que sea utilizadas. Un argumento a favor de ello, entre otros, es que no provocas que el lector del código se pregunte “¿para qué se usan estas variables?” antes de tiempo… Si declaras las variables justo antes de que sean usadas, la respuesta viene casi inmediatamente…

Por contra, favoreces el diseño CopyPaste, que es pecado.

jueves, diciembre 06, 2007

Sencillez (aparente)

No sé dónde lei que cuanto más sencilla es una aplicación para el usuario, más complicado es para los desarrolladores construirla. Y también es cierto que cuando un stakeholder te presenta sus necesidades, el primer modelo mental que se construye es francamente sencillo (o sea, poco detallado).

Cuando por fin vas pasando de un análisis del problema al diseño de una solución, el número de detalles aumenta naturalmente. Este tipo de detalles tiene muchas veces que ver directamente con el problema y siempre con los requisitos del usuario, tanto funcionales como no funcionales. Así, lo que antes era sólo introducir información se transforma en un conjunto de decisiones relativas a la validez de esos datos, a su tipo, a la estructura entre ellos, a qué hacer cuando los datos son parcialmente incorrectos. Sin decir nada sobre los mecanismos de seguridad, que determinan quién puede introducir qué datos y cuando. ¿Habrá un proceso de introducción por una clase de usuarios y otro de validación por parte de otra clase distinta? ¿Se querrá registrar quién introdujo la información? ¿Sólo la última modificación, o un histórico de ellas?

Para los que diseñamos y construimos sistemas de gestión, un síntoma de este Big Bang que transforma un problema primordial en un universo de soluciones galácticas (y el energético proceso que pasa de una a otra) aparece cuando tenemos que agregar "un campo más". Un campo más, es revisar desde la base de datos hasta todas las capas de presentación (incluyo informes), qué partes se ven afectadas... Sí, es cierto, es la más fácil de las modificaciones... :-) Imagínate cualquiera otra...

Por cierto, me niego a traducir "stakeholder" por tenedor de apuestas. Creo que la traducción más cercana podría ser "implicado en" o "interesado por" un proyecto. ¿Alguien tiene alguna otra sugerencia?

miércoles, diciembre 05, 2007

Anhelar el vasto e interminable mar

En uno de los posts el blog de Reginald he leído una frase preciosa de Saint-Exupery, sobre "liderazgo".
"If you want to build a ship, don’t drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea". —Antoine de Saint-Exupery (1900–1944), “The Wisdom of the Sands

¡Cuán lejos estamos de esto!

Un ingrediente esencial de la Felicidad

"El animal humano, como otros animales, está adaptado a una determinada lucha por la vida, y cuando con grandes riquezas el homo sapiens puede satisfacer todos sus caprichos sin esfuerzo, la nueva ausencia de esfuerzo hace que en su vida se [elimine] un ingrediente esencial de felicidad. El hombre que adquiere fácilmente cosas por las que siente no más que un deseo moderado, deduce que el logro del deseo no proporciona la felicidad. Si tiene aficiones filosóficas, deduce que la vida humana es esencialmente miserable, puesto que el hombre que consigue todo lo que quiere sigue siendo desgraciado. Olvida que la falta de algunas de las cosas que desea es un elemento indispensable de felicidad"


Bertrand Russell, en "La Conquista de la Felicidad", página 44, 1930. Editorial Espasa Calpe, S. A.

Las negritas son mías. He sustituido la palabra "remueve" por "elimine", que me parece un término más adecuado. Imagino que la palabra en el original en inglés sería "remove", que significa eliminar.

Por lo demás, estoy totalmente de acuerdo con el texto.

lunes, diciembre 03, 2007

Mort, Elvis, Einstein, y tú

Jeff Atwood sobre una manera de aplicar la ley de Pareto a los programadores, contestando a otro post anterior que ha provocado un montón de respuestas.

"La" manera de hacer las cosas versus "una" manera de hacer las cosas

Lo reconozco, estoy muy negativo. Esta entrada es negativa.

Acabo de leer en el blog de James Fallows una entrada (via raganwald), y comparan la forma en la que unos japoneses repostan un avión, con la forma en la que lo hacen unos chinos. Como bien dice, no es un estudio científico, pero a pesar de ello concluye que:
With usual caveats against sweeping generalization, what this made me think was: Japan is all about the way of doing things. Practice, ritual, perfectionism, as much fanatical attention to the process as to the result. China is all about finding a way to do things. Improvisation, little interest in rules, putting up with whatever is necessary to attain the result.
[El subrayado es mio, las negritas suyas]. Opino que la conclusión puede extenderse también a la idiosincrasia nacional: nos preocupa mucho lo que vayamos a conseguir, pero no tanto cómo lo conseguimos. En el mundillo informático en el que me muevo, el paradigma de "una" manera de hacer las cosas es "pero funciona", mientras que "la" manera de hacer las cosas ni siquiera se piensa, mucho menos se documenta ni se practica.

No lo veo ilógico. En el ámbito laboral, no prima tanto cómo haces las cosas (la manera en la que haces las cosas), sino qué resultados has conseguido en última instancia. Y en particular, tanto mejor si lo consigues en el menor tiempo posible, aunque eso suponga saltarse pasos "innecesarios" que luegon afectan directamente a la calidad de los resultados, o al (invisible) trabajo que hay que rehacer más adelante debido a la baja calidad de lo producido.

Tom deMarco y Tim Lister ya nos lo adelantaron en su libro Peopleware el año 1999. En su capítulo 4 (Quality, if time permits) nos sugieren que hagamos un experimento. Preguntad por ahí a 100 personas que os digan un país asociado a la alta calidad, y es muy probable que el país sea Japón. Y luego preguntad también por ahí qué país está asociado con una alta productividad. Y es muy posible que el país también sea Japón. ¿Alta calidad y alta productividad a la vez?

A ver si la influencia oriental del Japón se nota más allá de la creciente conversión de la gente al budismo.

Malicia e incompetencia

raganwald recoge una cita en una entrada de su blog que me ha encantado: ¡la ley de Gray!
Any sufficiently advanced incompetence is indistinguishable from malice.
¡Genial!

viernes, noviembre 30, 2007

¡Que viene la TDT!


Estos de Muchachada Nui son la cañaspaña...


miércoles, noviembre 28, 2007

De democratia

He encontrado dos maneras de hacer que el desarrollo de software se hagan según cierta manera, que vamos a llamar buena (no utilizaré el término mejor). La primera de ellas es utilizar plantillas para crear los distintos artefactos necesarios a lo largo del proceso. De esa forma, siguen una estructura predefinida. Si la plantilla llega al status de "formulario", entonces el tema es todavía más rápido. Existe un riesgo, que es fácil caer en el diseño por copiar y pegar. Si te das cuenta tarde de que puedes factorizar algo, el trabajo puede ser un tanto tedioso.

El segundo método es elaborar un diseño que obligue a que se utilice una determinada estrategia durante el desarrollo (esto se aplica más a la parte de construcción o codificación). Por ejemplo, con un framework de persistencia que obligue a que todo los accesos a la base de datos, incluidas las consultas, se realicen por medio de procedimientos almacenados, permite que la gestión de permisos o la modificación de la estructura física de la base de datos se pueda cambiar en ciertos casos sin que afecte a la aplicación, además de todas las demás ventajas conocidas del uso de procedimientos almacenados frente al acceso directo a las tablas en seguridad, rendimiento, coherencia de los datos...

Sí, lo sé, suena dictatorial y lo es. Pero no estamos hablando de que un proyecto sea una democracia. Sin control, sin ciertas restricciones, es imposible que llegue a nada. También entiendo que la democracia se puede hacer entre iguales, y no suele ser el caso...

Reconozco que estoy un poco sensible, pero creo que es más bien una reacción natural a la presión que impone el no poder comunicarme como me gustaría...

Creo que seguiré analizando este tema. Este pensamiento es simplemente una explosión, y hace falta destilarlo...

Física 2D (Enlaces)

Box2D en Flash: http://box2dflash.sourceforge.net/
El software te lo puedes bajar aquí: http://www.box2d.org/index.html

Muy interesante... Síp... Y muy educativo...

Por cierto, el código es abierto
(via Microsiervos)

martes, noviembre 27, 2007

Momentos de crisis

La diferencia entre fastidiarla y no fastidiarla se reduce en muchas ocasiones a tener una copia de seguridad, y una herramienta de comparación, estilo WinMerge (una magnífica herramienta gratuita que ha sustituido al differ de SourceSafe, no muy bueno, por cierto). Mejor decir que tienes dos versiones de un mismo elemento, y que tienes la posibilidad de compararlas.

Ya, lo sé, no descubro nada nuevo, pero es que acabo de sentirlo en mis carnes. Y gracias a que tenía dos versiones y un differ, he podido arreglar un problema grave, una de esas funciones críticas para un proceso crítico de un departamento crítico. Y después la tranquilidad. Esa que sientes cuando descubres que tu disco duro ha pasado a mejor vida, pero que tienes a ¡SuperCopia!, la copia de seguridad de tu disco duro que hiciste hace un par de días. La misma sensación de que tú y el Universo sois uno.

No diré lo evidente (evidente ahora, a principios de los noventa la cosa no estaba tan clara): Escoge uno, el que sea, incluso SourceSafe si no tienes otra cosa a mano, pero escoge un software de control de versiones. Ya. Yo por mi parte y por ahora, recomiendo Subversion.

Lo que me lleva a otro problema que tengo. Ahora mismo estoy versionando el proyecto VB.NET sobre el que trabajo. ¿Todo? ¡No! Una pequeña aldea gala... Errrr... Una serie de elementos no están versionados: los objetos de la base de datos, o para ser más precisos, sus scripts DDL. Voy a investgar qué hay por ahí para eso, con las herramientas que tengo.

¿Alguien sabe si hay algo por ahí para versionar una base de datos?

jueves, noviembre 22, 2007

Zodiaco

Acabo de modificar mi perfil en Blogger. Cuando he visto mis intereses, he cliqueado en uno de ellos para buscar gente con el mismo interés. Y me ha sorprendido ver que junto a su edad y sexo, claramente dos características importantes de una persona, también aparece su signo del zodiaco (el de los 12 meses, no el de los 12 años).

No deja de sorprenderme que a punto de terminar la primera década del siglo XXI, todavía nos dejemos llevar por algo tan poco científico como es el signo del zodiaco. ¿Han pensado los Hombres G de Google que alguien pueda pensar: "Voy a seguir a esta persona, que los libra nos llevamos bien con los leo"? ¿O acaso que se pase por la cabeza del alguien algo así como "seguro que este virgo tiene mejores ideas, que conozco las de los sagitario y.... ¡puf!"?

Te puedes definir por muchas cosas. Y la gente te podrá etiquetar por muchas otras. Pero que definas a los demás con esto, organizando a 6000 millones de personas (o más) en 12 grupos "bien definidos", haciendo que haya 12 formas de ser, 12 caracteres y 12 formas de entender la vida, me parece una manera muy limitada de pensar. Todavía peor, que acabes pensando que tienes que ser cabezón si eres tauro, o que tienes que ser sensible si eres piscis, o si eres muy vehemente si eres leo... ¡Qué manera de encasillarse uno a sí mismo!

Por cierto, yo soy piscis... ;-)

viernes, septiembre 07, 2007

Pienso que piensas que pienso que...

Leido en el blog de Maeda, acerca de lo que yo he llamado "pienso que piensas que pienso que...", pero expresado con mejores palabras.

domingo, julio 29, 2007

In Springfield

lunes, julio 23, 2007

Un par de citas

Always do right. This will gratify some people and astonish the rest. (Mark Twain)

The good life, as I conceive it, is a happy life. I do not mean that if you are good you will be happy - I mean that if you are happy you will be good (Bertrand Russell)

jueves, julio 19, 2007

Internet en un disquete

"Oye, necesito que me cuentes de qué va este PaqueteSoftware". "El PaqueteSoftware es un software complejo, muy grande. ¿Qué aspecto necesitas conocer? ¿Arquitectura lógica? ¿Implantación? ¿Comunicaciones con el exterior? ¿Cómo lo tenemos parametrizado?". "No, en general".

martes, julio 03, 2007

Fallen philosopher

Yes, I finally broke down... I have to admit it... Once again, I've started a new electronic venture, and once again I don't know when or where it will finish... Given the past experience, it will finish sooner than later, and anywhere in the Internet Digital Ocean...

I'm finally a user of twitter

You can follow me at http://www.twitter.com/wilsoke !!

jueves, junio 28, 2007

Hi Tech Consumism

I've been reading an article at DevX called Semantics and the Especialized Languages, and I've seen there the first mention (for me) of the brand-new so-called new-buzz-word Web 3.0. Yes, read it as it is. We've not exploited the now old concept of Web 2.0 yet, and we are already confronted with (babymosesinabasket!) the new version of it.

One reflections come to my mind. First, software is not free from consumism... Once you just savor the taste of a new technology, as fast as you touch it with your tech tongue, it's no more a new technology. Go fast! Go taste another new one! But wait! Over there! A new new newer technology... Now we walk our way from here to there, without obtaining all the benefits and deep understanding from these, leaving the path behind us full of new-becoming-old concepts, like one-bite'd apples.

As Newton said (paraphrasically) , he walked on giants' shoulders. We can't loose the oportunity offered by the past. We have to build on those proven foundations, on valid and demonstrated principles, and stop renaming them every now and then. Just try to call the things you know as you learned them, and make a new name up only if it is better than its predecessor. Get to a new name only if it represents and really new concept. At least, declare that one given name is synonim of another, without stating it as new.

But wait, Have you noticed that? Smells like... Smells like marketing!

PS: The marketing guys have done all a new business out of the "new" word... If it's not new, it's not good... Maybe that's the cause of older people being despised (sigh) :(

martes, mayo 22, 2007

La Historia Con Mayúsculas en peligro

Acabo de leer un artículo de Grady Booch, "Speaking Truth to Power" (IEEE Software, Marzo/Abril 2007), y me ha llamado la atención una frase en particular:
Email and other software-intensive mechanisms increase the velocity of communication; yet email and the aging of digital archives threaten the preservation of history.
Yo uso Historia en vez de historia para hacer evidente que el término usado por Booch es "history" y no "story".

¿Qué significa que los archivos digitales amenazan la conservación de la historia? Entiendo que la facilidad con la que puede modificarse (o hackearse) un archivo digital es más fácil que entrar en la Biblioteca Nacional y modificar un incunable o un tratado comercial del siglo XVI. Aunque no es menos cierto que es más difícil para un individuo desconsiderado con la memoria colectiva el modificar todas y cada una de las copias digitales de un documento. Creo que esto podría ser un motivo para argumentar la copia indiscriminada de contenido, o para ser políticamente más correcto, la extensión de la tecnología de firma digital :-).

Imagino que antes los archivos estaban gestionados por gente competente, y que la memoria colectiva estaba protegida por historiadores capaces en su trabajo. Sé que soy un poco ingenuo en ese sentido, porque otros podrían argumentar que como personas, serían falibles, y en todo caso, estarían inmersos en su contexto histórico, lo que significa que esa memoria histórica estaría siendo evaluada constantemente por este historiador del que hablamos. Esta evaluación podría llevarle a tergiversar la historia para favorecer algún interés inmediato. Podríamos decir que ante la disyuntiva entre sinceridad histórica y satisfacción de intereses, se dejó llevar por esta última opción.

Pero sigo siendo ingenuo. No creo que este hecho se haya dado con frecuencia, y ofrezco varias razones. En primer lugar, pienso que su verdad, la verdad de este historiador, tendría que enfrentarse con "las verdades de los otros". Si una mentira quiere progresar, debe ser coherente, disfrazarse de verdad. Sin embargo, la verdad emerge del contraste entre distintas visiones, como todo el mundo sabe, o al menos una interpretación compartida de la realidad. Una mentira sobrevive en tanto en cuanto los implicados la toman como verdad. A medida que el número de implicados aumenta, la posibilidad de que la mentira sobreviva decrece.

En segundo lugar, una mentira no supera el paso del tiempo, sobre todo mentiras de la entidad de la que hablamos. Evidentemente, si miento a una persona, puedo mantener con vida la mentira si su impacto es pequeño, de forma que... se olvide :-) Desde ese punto de vista, la mentira no existe (tampoco la verdad, claro está). Pero si hablamos de mentiras de más calado, con un mayor impacto, nos daremos cuenta de que ésta debe ser coherente con el resto de las "verdades" con las que tiene que convivir (¡un pensamiento fugaz! ¡la evolución darwiniana aplicada a la verdad y la mentira!). Entiendo que cuanto más calado, con más verdades tiene que hacerlo (convivir quiero decir), y más difícil es para el mentiroso.

Me quedo sin tiempo, creo que seguiré reflexionando sobre ello más adelante. Como siempre, espero comentarios.

lunes, abril 02, 2007

El Espejo

En su libro "El Fenómeno Humano" (Taurus Ediciones, 1967, página 44), el Padre Teilhard de Chardain dice:
Llegados al extremo de su análisis, [los físicos] ya no están muy seguros de si la estructura conseguida es la esencia misma de la Materia que estudian o el reflejo de su propio pensamiento. Y de una manera simultánea se dan cuenta de que, por un choque retroactivo de sus descubrimientos, ellos mismos se hallan cogidos en cuerpo y alma en la red de las relaciones que habían creído lanzar desde el exterior sobre las cosas; en una palabra: se hallan presos de su propia trampa. Metamorfismo y endomorfismo, diría un geólogo. El objeto y el sujero se mezclan y se transforman mutuamente en el acto del conocimiento. Quiéralo o no, desde ese momento, el Hombre vuleve a encontrarse a sí mismo y se contempla en todo lo que observa.

El límite de nuestro conocimiento es un espejo en el que mejor nos vemos cuanto más nos acercamos. Y detrás, lo inexcrutable. Lo que vemos es lo que somos, y somos lo que vemos.

viernes, marzo 23, 2007

Gato

Una casa sin un gato, un bien alimentado, bien cuidado, bien reverenciado gato, puede ser una casa perfecta, pero ¿cómo puede llegar a demostrarlo?
Mark Twain

martes, marzo 20, 2007

TSLOC

En su artículo "Cracking Software Reuse", Diomidis Spinellis comenta algunos aspectos relativos a la reusabilidad del software, del que se ha dado en conocer "de grano gordo" o coarse-grain reuse. Describir una extensión no inherente a MediaWiki (el motor de Wikipedia) que permite la representación de tableros de ajedrez combinando elementos como tablas html e imágenes entre otros, le sirve para desvelar algo de lo que pocas veces somos conscientes:
Digging deeper, we’ll find that MediaWiki consists of about 175,000 lines of PHP (PHP: hypertext preprocessor) code using the MySQL relational database engine. A rough count of C/C++ source code files in the PHP and MySQL distributions gives us 740,000 and 1.8 million lines, respectively. And underneath, we’ll find many base libraries on which PHP depends, the Apache and Squid server software, and a multimillion-line-large GNU/Linux distribution. In all, we see a tremendously complex system that lets hundreds of thousands of contributors cooperatively edit two million pages—and still manages to serve more than 2,000 requests each second.
(en: Diomidis Spinellis, "Cracking Software Reuse," IEEE Software, vol. 24, no. 1, pp. 12-13, Jan/Feb, 2007).

Lo que sorprende es que todo esos trillones de líneas de código fuente (TSLOC) den soporte a un grupo de personas para elaborar una plantilla que permite mostrar un tablero de ajedrez. Marea pensar la complejidad conjunta de todos esos sistemas, y la manera en la que han sido integrados entre ellos. Cómo dice Spinellis, we should be doing something right.

miércoles, marzo 14, 2007

Martin Fowler

Indudablemente, uno de los ingenieros software que más me ha influido ha sido Martin Fowler. Su forma de razonar un diseño, su manera de expresarlo, y los ejemplos de código presentados para ello han hecho mella en mí.

viernes, febrero 23, 2007

Búsquedas web en el contexto de intereses personales

¡Parece que me han oido! Investigadores de la Universidad de Utah están trabajando en un sistema de búsqueda contextual, basada en intereses personales. Todavía no he leido el artículo (sólo el abstract), pero puede resultar interesante. Si veo que es interesante lo comentaré aquí.

martes, febrero 20, 2007

Information overflow

Llevo unos días probando Google Reader, la herramienta de Google para leer los feeds de atom y rss. La verdad es que está bastante bien, sobre todo porque aplica un concepto conocido (mi buzón de entrada) a un concepto nuevo (una lista de actualizaciones realizadas en un blog). Eso creo que lo hace más fácil de usar.

Sin embargo, no quiero entrar ahora en ese tema. Lo que me trae hoy aquí es que vuelvo a sufrir (otra vez) eso que llaman information overflow. Vamos, que ando saturado de información, demasiada información. No es que sea inutil, es que es demasiada. En esta disyuntiva, se me vienen a la cabeza algunas alternativas. La primera de ellas es cortar de raiz... Si tienes un feed que te ofrece más de 10 enlaces al día, te has equivocado de feed. Lo mejor, es quitarse de encima el feed. Es casi como spam... Es insufrible...

Pero claro está, ¿qué voy a hacer si pierdo, de entre esos 10 enlaces diarios, el que me resuelve el problema de mañana, el que me hace cambiar mi manera de pensar y me hace entrar en un nuevo estado mental, el que necesito para entender por qué las cosas funcionan en el mundo como lo hacen? La solución de cortar por raiz, es muy efectiva, pero no muy eficiente. Lo ideal sería poder filtrar el contenido. ¿Lo que me gustaría? Una herramienta que fuera capaz de ir "aprendiendo" de los artículos que me gustan, de los que leo, de los que desecho... Que analice la metainformación de la información que me llega, y deduzca si el artículo va a ser relevante o no... Lo que yo quiero es una función consumir(informacion) que devuelva un booleano indicando si debo leer/usar/procesar esa información... Mejor, una función consumir2(informacion) que devuelva un entero, indicándome la relevancia de la información. De esa manera consumir(informacion) = consumir2(informacion) > umbral, donde yo pongo el umbral. "Hoy sólo quiero información con umbral = 1", por ejemplo...

También es cierto que una función así, si funcionara como se espera, me iría etiquetando, de forma que sería muy difícil que pudiera decidirme en un momento dado a explorar otros caminos, con umbral < 0,5. En fin, que hoy por hoy, voy a hacer yo de función consumir, y utilizaré como información las cabeceras de los artículos de los feeds.

Feliz navegación.

viernes, febrero 09, 2007

La junta de la trócola

Para persistir la información de una aplicación, usamos un framework de persistencia, desarrollado por nosotros, pegando trozos de distintos libros y artículos, en una especie de framekenstein de software. Como en la mayoría de los frameworks, impera el principio de inversión de control o Principio de Hollywood. Para ello, creas una clase que hereda de otra base en el framework, e implementas los métodos que necesita la clase base.

Si existen muchas clases que heredan de una de esas clases del framework, cambiar esa clase puede ser un problema. En nuestro caso, nuestas clases heredan de un Data Mapper (más información aquí), llamado BrokerSql.
class ClienteBroker : Servicios.Persistencia.BrokerSql {...}
Si mañana decidimos hacer que las clases hereden de otras, tendríamos que ir clase por clase cambiando el nombre. Tampoco es que sea mucho problema, pero ¿qué tal si hacemos esto?
class JuntaTrocolaBroker: Servicios.Persistencia.BrokerSql {...}
y luego
class ClienteBroker: JuntaTrocolaBroker {...}
Bueno, la verdad es que esto es más una comida mental, porque estoy asumiendo que el día que en vez de heredar de BrokerSql heredemos de BrokerXml, los métodos a implementar por ClienteBroker serán los mismos, que seguro que no es el caso, ni siquiera en los valores devueltos, pero en fin, estoy en plan brainstorming, por si a alguien le sirve directamente, o para generar otra idea.