Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Monday, October 29, 2007

 

¿Por qué aún no me he pasado a los DVCS?

Antes era por vagancia de probar algo nuevo, pero ahora tengo argumentos :D. Además, suficiente que ya he conseguido cambiar el chip de MS Source-Safe a Subversion de bastante gente, como para ahora ir cambiándolo de nuevo. Subversion promete mucho en sus próximas versiones, sobre todo porque promete algo del estilo "lo mejor de los dos mundos", el eterno concepto. Un repositorio centralizado pero con funcionalidades de los repositorios distribuidos.

No soy del grupo del 80% del que se habla en el artículo que he enlazado, pero convivo con muchos compañeros que sí lo son, y por tanto considero de crucial importancia la simplicidad, la compatibilidad con Windows, y la disponibilidad de una GUI (en este caso me inclino ciertamente por el 80%, o no conquistaremos el escritorio en la vida).

Y para terminar el artículo, ejemplos. Proyectos importantes como Mono, KDE y SourceForge.NET se pasaron de CVS a Subversion, y ahí se han quedado. Mozilla sigue con CVS pero van a cambiar a Mercurial (DVCS), a pesar de lo pesado que he sido ;)

Actualización 31-OCT-2007: Al final me he leído todos los comentarios de la entrada y la verdad he encontrado algunos brillantes, hasta el punto de que quizás me hayan convencido de que sí algún día tendría que probar los DVCS, además de seguir muy de cerca al rey de los CVCS: Subversion.

Actualización 02-OCT-2007: Acerca de la conversión VSS->SVN que he mencionado, me gustaría poner un enlace a una historia con la que me siento muy identificado.

Labels: , , , ,


Sunday, October 28, 2007

 

CallerWatchDog, in case of fire

Últimamente en mi trabajo había que refactorizar (o más bien, tirar a la basura y rehacer) cierto código que implementaba reintentos de llamadas a webservices usando recursividad (con el peligro que ello conlleva, de aumento de memoria por uso de la pila; y más sabiendo que podía hacerse sin recursividad) y ningún tipo de reutilización en el comportamiento del reintento.

Me he pasado gran parte del fin de semana implementando un "CallerWatchdog" que se encargará de hacer este trabajo de manera más eficiente: sin recursividad, sin usar threads adicionales, usando Timers en lugar de Thread.Sleep (de manera que otro Thread pueda matar mi proceso sin obtener excepciones), etc.

Esto me va a permitir cargarme un fichero inmantenible de 3.000 líneas que aún sobrevivía tras el paso de los años. Desde luego que cuando lo haga, y pueda comprobar que la refactorización funciona, va a ser bastante gratificante.

No es que suela ser habitual lo de hacer horas extras (ni siquiera típico cuando hay que apagar algún "fuego", a excepción de la iniciativa propia), pero ya que deduzco que seguramente no me las pagarán, me voy a tomar la libertad de liberar, válgame la redundancia, esta pequeña porción de trabajo hecho en mi tiempo libre. Al fin y al cabo, lo voy a modificar ligeramente para que se adapte al sistema de logs de mi empresa, así que no veo ningún tipo de problema en ello (máxime cuando, como ya sabrá mucha gente, es factible saltarse las restricciones de la GPL siempre que el que lo hace sea el propio autor).

Lo podéis encontrar en esta entrada de MonoPort. Al final del todo encontraréis ejemplos de su uso.

Lo que más me gusta de mi solución es que, a pesar de ser tremendamente genérica (válida para cualquier tipo de método que no tenga más de un parámetro, con lo que podemos encapsular cualquier cosa que use más mediante objetos o estructuras), no me he saltado la estaticidad de tipos mediante reflection, sino que he utilizado delegados y tipos genéricos. Seguramente este tipo de cosas son más fáciles de hacer en un lenguaje dinámicamente tipado, pero sinceramente no creo que valga la pena arriesgar el resto del sistema sólo por este tipo de funciones genéricas puntuales.

Labels: , , ,


Monday, October 08, 2007

 

Curiosidades sobre lenguajes

Como buen seguidor del omnipresente lenguaje C#, me complace mucho enlazar a un artículo muy interesante que nos introduce a una palabra clave del lenguaje bastante poco conocida, e infrautilizada: yield.

Por supuesto, éste lenguaje no es perfecto, y prueba de ello son algunas voces que critican bastante la nueva versión 3.0, que incluye bastantes modificaciones sobre todo debidas a LINQ. Algunos de estos cambios nos traen capacidades típicas de los lenguajes funcionales, y aquí voy a enlazar a un blog que incorpora una serie de artículos para que poco a poco vayamos cambiando el chip.

En otro orden de cosas, y ya que éstamos hablando de lenguajes, me gustaría mencionar algo de VB.NET (a pesar de que se ha criticado bastante, por mí y por otros): según este blog, están pensando funcionalidades para la nueva versión, y en esa misma entrada Rolf (el desarrollador del compilador de VB de Mono) propone bastantes cosas interesantes (algunas para que el VB deje de ser tan basura, y otras para que siga teniendo las [pocas] ventajas sobre otros lenguajes). Yo también he comentado algo en la entrada, con mi wishlist particular.

Y hablando de wishlists, en breves días publicaré también una lista de cambios que me gustaría se incorporaran en la próxima versión de C# (está basada en la 2.0, pero como ya sale la 3.0, tendré que actualizarlo...).

Actualización [unos minutos después de publicar]: Ya que estamos, también voy a hablar de Java. No hay que olvidar que en mi AntiFUD de Mono pongo a éste lenguaje en un pedestal (sobre todo por su reciente liberación, gracias a Sun), aunque sigo pensando que tiene inconvenientes con respecto a C#/Mono. En general, lo que opino se puede resumir en lo mismo que opina Zac Bowling (un desarrollador de Mono) en este artículo:

Honestly, I believe Java has a lot of inherit issues that pretty much can’t get fixed without breaking most backward compatibility (too many things to cite here), which is why I contribute to and support Mono and .NET. For the record though, I don’t hate Java though, and I spend a good amount of time at work developing in it. It just seems like there are so many better alternatives.

One of the only things good about it all is that at least Java isn’t entirely proprietary anymore (although good many of the common libraries, frameworks, and implementations remain that way).


Actualización [unas horas después de publicar]: También me vienen a la mente mis queridos lenguajes de programación de tipado dinámico, los de las tres P's y la R: Perl, Python, PHP, Ruby.

Me parece genial que estén surgiendo iniciativas para que estos lenguajes compilen a código CIL de .NET, para que así haya interoperabilidad entre todos (IronPython, IronRuby, ...). Pero sigo pensando que no deberían usarse para cosas medianas-grandes, por los problemas que dan en el medio-largo plazo.

Y es que los avances en la informática no hacen más que dar la razón a la gente que opta por cosas como Java o .NET, plataformas mucho más evolucionadas. Ejemplo de ello es, pongamos, el hecho de que PHP en su próxima versión vaya a soportar namespaces, o que Python, en su próxima versión, vaya a soportar una condición de compilación opcional para hacerlo estáticamente tipado. ¿Es que no se dan cuenta que constantemente están poniendo funcionalidades que ya tienen C# y Java de hace mucho?

Actualización 22-OCT-2007: Me ha encantado una entrada de otro desarrollador de Mono que opina de forma similar a mí: Gnome3 debería estar basado en Mono, quitando C++ y C, sustituyendo Python por IronPython, Ruby por IronRuby, etc...

Actualización 31-OCT-2007: Para que se entienda mejor lo que quiero decir sobre los lenguajes estáticamente tipados, es decir, los derroteros por los que han derivado las conversaciones en esta entrada, voy a citar texto de una entrada de Joe Shaw, uno de los desarrolladores de Beagle:

And lastly, having worked with Trow on a reasonably big desktop Python app, we wanted a strongly typed language. Writing real applications in Python requires a discipline that unfortunately most people (including myself) are unwilling to adhere to, and this easily leads to buggy and hard to maintain programs. You have to be very diligent about unit tests and code coverage for every line of code, because you can’t rely on the compiler to catch errors for you. We had been burned by this a bit, and wanted to get back to a strongly typed, but still easy to use language that integrated well with the desktop.

Actualización 17-DIC-2007: Proyecto super cursioso a destacar: LINQ para Java.

Actualización 02-ENE-2008: Super interesante esta entrada de Miguel de Icaza en la que habla de benchmarking de plataformas de desarrollo, y de la que me gustaría citar un fragmento:

  • Close to the metal languages are the first tier (C, C++, D, Pascal, even Eiffel).
  • (...)

I just noticed that Eiffel is on the first tier, performance wise, but has pretty much all the properties and features of the third tier (garbage collection, strong typing, bounds checking). This means that you get the best of both world with it (and Eiffel's compiler is now also open source).


Conclusión A: ¿no es Eiffel acojonante? Creo que voy a dejar de usar Mono...

Conclusión B: Va a ser importante eso del "static typing" si también lo dice Miguel de Icaza ...

Labels: , , ,


Thursday, October 04, 2007

 

Tenemos un problema

Tenemos un problema en este país: la monarquía.

Voy a reproducir una noticia como llamamiento a la manifestación:

Desde esta mañana circula por correo electrónico y sms la convocatoria anónima de una concentración ciudadana para el próximo Viernes 5 de octubre, a las 21:30h en la Plaza del Rey de Madrid. El llamamiento es para protestar por la "cruzada contra cualquier expresión crítica hacia la monarquía".

El texto de la convocatoria denuncia que "de unos meses a esta parte estamos siendo testigos de una cruzada contra cualquier expresión crítica hacia la monarquía. Sus últimos episodios consistieron en el secuestro y enjuiciamiento de la revista El Jueves por un chiste sobre la corona, la persecución de las personas que quemaron una foto de los reyes, y la identificación posterior de la gente que realizó otra quema colectiva de fotos".

"Estos episodios evidencian que la libertad de expresión se está viendo amenazada, persiguiendo y cercenando toda posibilidad de cuestionamiento de la monarquía. Hemos decidido plantear una movilización que recoja los dos elementos simbólicos de ambos episodios, el fuego y el sentido del humor", según la información que ha recibido TerceraInformacion.es.

"Expulsemos a la monarquía de nuestra vida cotidiana, quememos sus distintas expresiones y hagámoslo con sentido del humor. Para ello hemos decidido quedar para hacer una quema colectiva de los reyes de la baraja española (oros, copas, espadas o bastos), incluso hay quien está planteando quemar a los reyes magos, a Aragorn y su retorno del Rey, a Pelé o al mismo Elvis… Vamos, que os invitamos a hacer un ejercicio de imaginación y escapar de las imágenes a las que nos tienen acostumbrados los telediarios", expone el correo electrónico de la convocatoria.

La convocatoria via e-mail y sms hace un llamamiento a los ciudadanos para "hacer de esta movilización un verdadero ’órdago a la grande’ ".


No sé si es manifestación legal o no, pero independientemente de eso, la policía no puede disolver una manifestación si es pacífica.

Y al hilo de esto, reproduzo un artículo de FARO con el que me he sentido muy identificado:

Tenemos un problema con nuestra policía. Tenemos un problema con cómo nos torturan, tenemos un problema con la naturalidad con la que mienten ante unos jueces acostumbrados a desear oír esas mentiras. Tenemos un problema, y hay que buscar alguna solución, empezando por llamar a cada cosa por su nombre.

Sí, lo sé, no es cierto… en realidad tenemos muchos problemas: casi todos los políticos nos roban y luego se ríen en nuestras narices como en lo más sórdido de la Edad Media; entonces se comportaban como dioses, con sus sillas de posta, su altanería y modales 'refinados', y hoy hacen exactamente lo mismo, a bordo de esos Audi A6 y A8 con los cristales oscurecidos, que tanto les gustan y que muchos de nosotros interpretamos como un derroche que se traduce en una enseñanza pública Realmente mala y una sanidad pública en Franco retroceso (perdón por las mayúsculas intencionadas).

Pero hoy no quería hablar de eso. Tampoco quisiera hablar de los malditos tipos de interés variable, incardinados en una 'política monetaria' que en realidad solo beneficia a quienes poseen alguno de esos yates que utilizan para cenar, tras pasar la tarde en el golf y la mañana en misa.

No, no quiero hablar de todas esas cosas… ni siquiera del hecho de que nuestros mercenarios, hartos de un secuestro masivo que ya dura más de siete décadas, se dediquen a genocidear caucásicos, caribeños, persas o indo-asiáticos… no. El problema al que hoy quisiera dedicar algunas líneas es bien distinto:

Nosotros, el Pueblo, tenemos un problema con 'nuestra' policía; con quien les manda, y también con quien les controla.

Ocurre, que entre aquellos a quienes pagamos el sueldo, se entremezcla una piara de abusones que con el tiempo, se han acostumbrado a justificar su 'razón' en el abuso de la fuerza, y pocas veces al revés. Tenemos un problema: tenemos que soportar que individuos con un arma reglamentaria al cinto nos golpeen, nos insulten, traten de humillarnos, y nos provoquen… pasándose la Constitución por el forro de los cojones (sí, esa mala redacción, salida de la mano de un chusquero con apellidos compuestos, impuesta bajo amenaza de repetir en 1978 lo que ya hicieran en 1936, y 'refrendada' mediante un 'proceso electoral' en el que se votó a una única opción —omitiendo deliberadamente la totalidad de las propuestas alternativas que bullían en el seno de la ciudadanía—, en fin, todo muy "democrático").

Hablo de la impunidad, de lo cotidiano de atropellar los derechos civiles y políticos… hablo de la normalidad con que algunos ven el recurso a la tortura, hablo del feo vicio de mentir en sede judicial, de la generalización de la práctica de 'fabricar pruebas', de todo eso… y de tantas otras cosas que todo el mundo sabe y de las que pocas veces oiremos hablar.

Opino yo, que a lo mejor el asunto tiene su raíz en nuestra curiosa forma de transitar de la primera a la segunda fase del franquismo. Probablemente, si a la muerte del terrorista que nombró al rey de España, hubiéramos iniciado un verdadero proceso de democratización del país, hoy no nos encontraríamos como nos encontramos.

El hecho es —por hablar con sencillez—, que tenemos un estamento judicial que causa sonrojo en el extranjero (se nos teme aún más que al país del "Expreso de medianoche"). Lo que digo es tan cierto, que cualquiera que disponga de cinco minutos para 'jugar' en el Google, puede comprobar lo que opinan en la OSCE de nuestros pequeños aprendices de Adolf, con toga.

¿Y eso qué tiene que ver? Pues muy fácil: si todo depende del criterio de un juez, y la mayoría de ellos son, como todos sabemos que son… he aquí una explicación del curioso respeto que ciertos hotentotes sienten por nuestros derechos constitucionales.

Quizá se arreglaría con sentencias ejemplares, o a lo mejor se podría resolver incluyendo una asignatura de filosofía en los planes de estudio de las academias de policía. Imagino que alguien con una mínima capacidad para razonar, debería comprender que no es civilizado agredir a personas inocentes, que demás le pagan el sueldo, valiéndose para ello de las porras y el resto material que sus propias víctimas le han puesto en la mano, con la ilusa esperanza de que les brinde seguridad y protección.

Volviendo a la Historia: basta darse un garbeo por las transiciones de verdad que se han llevado a cabo en países como Alemania, Sudáfrica, Argentina o Chile, para concluir que en España nos hemos saltado algunos pasos. Pasos, como el de obligar a la Empresa de Brujos Romanos a que se busque las habichuelas por si misma —y de paso, que se mantenga alejada de nuestra infancia—; pasos, como el de abundar en la separación de poderes… o incluso cosas más evidentes: como el hecho inexplicable, de ponerse a redactar una Constitución, omitiendo el detalle de que antes se debe abrir un Proceso Constituyente.

A la vista de lo ocurrido en Malasaña, en la Gran Vía, en la comisaría de los Mossos d'Esquadra, en la Puerta del Sol, en la Glorieta de Bilbao, y en tantos y tantos otros lugares, cabe suponer que uno de los pasos que se quedaron en el tintero, fue el de una formar una Comisión de la Verdad, que se encargara de depurar los mayores crímenes (y a los mayores criminales) de los primeros 40 años del franquismo.

Ojo, que nadie se asuste, no pretendo encarcelar a los hijos de la gran puta que se lo merecen, no, no es eso, no es eso… pero convendréis conmigo, que no estaría de más conocer el nombre de quienes apretaron el gatillo contra Grimau —aunque solo sea por respeto a su familia—, o mejor aún: identificar a aquellos que, simulando ejercer de jueces, ensuciaban el nombre de la Justicia, haciendo las veces de meros intérpretes de un sistema legal viciado desde su origen.

No es eso, no es eso… no pretendo encarcelar a esos hijos de la gran puta… pero sí quisiera al menos saber quienes son, y apartarles para siempre de nuestras Instituciones Públicas. Lo mismo me da si están enchufados en los consejos de administración de empresas públicas malvendidas a los amigos, o si ensucian hoy algún escaño en el Senado. No me importa en cual de lo tres poderes vegetan... no les quiero entre rejas, les quiero en la puta calle.

¿Por qué? Porque así como nadie come en el sitio donde defeca, no podemos esperar Democracia precisamente de aquellas personas en quienes reside la esencia de lo contrario.

Tenemos un problema: una preocupante proporción de miembros de los cuerpos y fuerzas de seguridad del Estado está compuesta por delincuentes reincidentes. Cosa que además de provocar inseguridad en la ciudadanía, ensucia el buen nombre de sus instituciones y desprestigia a sus compañeros honrados. Iba a escribir 'delincuentes comunes' pero no, no es nada común delinquir amparado en una fuerza concebida para luchar contra el crimen. Es zafio, grotesco, vulgar, soez, vil… que un policía agreda a un inocente e indefenso ciudadano, es una falta de respeto a la civilización.

Es tan natural, que todo padre o madre saben bien de lo que hablo: las criaturas tienden a hacer todo lo que se les permita. Con la policía ocurre exactamente lo mismo, y puesto que nuestro sistema judicial padece de vergüenza sistémica, anclado en el pasado… y escorado a la ultra-estribor… nuestros 'profesionales de las armas', como si de niños se tratara, hacen todo cuanto se les permite. Es decir, todo.

Del mismo modo que para apagar un fuego se debe dirigir el extintor hacia la base de las llamas, para acabar con la impunidad, para concluir con esta burla al Estado de Derecho, es necesario introducir elementos de supervisión en la actuación del Poder Judicial y los cuerpos y fuerzas de seguridad del Estado. Esta supervisión no debe traducirse únicamente en aumentar el control político (jodiendo aún más la separación de poderes), no, no es eso, no es eso… lo que necesitamos es mayor transparencia, verificabilidad, luz, libertad de expresión, limitar —por ejemplo— los abusos en la práctica de declarar secretas aquellas actuaciones judiciales que producen vergüenza ajena.

Necesitamos policías mejor formados en criterios humanistas, con verdadero espíritu de servicio a los demás. Necesitamos más y mejores instrumentos de control de la función pública; mayor transparencia y participación de la ciudadanía en la Administración de Justicia.

La policía no merece tener en su seno a semejantes individuos. La judicatura no merece verse sometida a semejante descrédito intestino. La clase política no merece verse representada por individuos que ven obstáculos donde no debería haber más que propuestas ciudadanas a tratar con el debido respeto al juego democrático. La policía, la judicatura y la clase política deberían recuperar el Alto Honor que los ciudadanos esperamos de nuestras instituciones públicas.

Que nadie se confunda, no pretendo meter a todos en el mismo saco, "generalizar es malo" ¿recuerdan? Sé muy bien que entre esos pocos seres deleznables, hay un buen número de buenos profesionales. Por eso mismo, por el respeto a esos policías, jueces y políticos honestos… por el mayor respeto que sin duda merece el común de la ciudadanía, ruego, por favor, hagan algo, porque estamos con la mierda al cuello.

Necesitamos que alguien vigile al vigilante.

De lo contrario, todo seguirá como en los últimos setenta años, habrá miedo, silencio, palizas, gritos, fábulas jurídicas, vergüenza ajena, temor, violencia, corporativismo, pruebas falsas, heridos, familias destrozadas… y ciudadanos que teman a sus gobernantes, en lugar de justo lo contrario.

¡Salud y Justicia!


Actualización 19-NOV-2007: Parece que el problema persiste.

Actualización 09-DIC-2007: ¡¡Qué mal huele todo!!

Actualización 14-ABR-2008: Otro video de brutalidad policial.

Labels: , ,


Wednesday, October 03, 2007

 

Microsoft publica (que no libera) el código fuente de la librería de clases de .NET

Según la nota en el blog de Miguel de Icaza, Microsoft publica el código fuente de las librerías de clases de .NET bajo una licencia no libre, al más puro estilo de Sun cuando en el pasado publicó las fuentes de Java sin liberarlo del todo.

Si alguien todavía pensaba que en esto de las plataformas de desarrollo no había competencia, no dejará de sorprenderle este hecho, cuya iniciativa seguramente esté basada en las ventajas que ofrece la competencia (Sun) a los desarrolladores con esta posibilidad.

Gracias a .NET (y/o Mono) se libera Java, y gracias a Java, se va liberando .NET. ¿Curioso no? ¿Llegará el día en el que Microsoft publique o libere las fuentes de Windows? :)

P.D.: Para el que no le ha quedado del todo claro: no, no se puede incluir código de Microsoft en Mono. Incluso ocurre que cualquiera que haya mirado el código de MS tiene prohibido ya por siempre ser colaborador del proyecto Mono. Esta cuestión la han tildado algunos tremendistamente como dando a entender que este movimiento es de Microsoft precisamente, para poner una trampa al software libre de .NET. Pero, me pregunto yo, por esa regla de tres, habría ocurrido lo mismo cuando Sun publicó el código fuente de Java, ¿no? Sin embargo, proliferaron sin problemas implementaciones alternativas de Java.

Labels: , , , , ,


This page is powered by Blogger. Isn't yours?

Categories

RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:
aaragonesNOSPAMes@gnNOSPAMome.org

Archive
My Photo
Name:
Location: Hong Kong, Hong Kong
Follow me on Twitter