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

Sunday, May 28, 2006

 

Man-in-the-middle authentication

Con este concepto tan psicódelico he querido describir la típica situación que se da cuando quieres que un conocido mire algo por ti en un sistema en el que necesitas autenticarte pero al que no tienes acceso físicamente, y por el contrario el conocido sí tiene. Lo ideal para este tipo de cosas son las "OnceTimePassword", pero si no te has preparado el tinglado para esto, ¿le dirías tu contraseña?

Esto precisamente me pasó ayer, cuando necesitaba mirar mi correo electrónico pero el ADSL no me funcionaba en casa. La solución pasaba por hacerlo a través de mi hermano, mediante llamada teléfonica. Siempre da un poco de reparo decir tu contraseña a alguien, aunque sea un familiar, y sobre todo cuando puede ser fácil de recordar y, por más que esta persona no quisiera, nunca podría evitar acordarse. Además a mí me ocurre que me caso con las contraseñas, tengo tres o cuatro que uso en bastantes sitios, por lo que no me sería nada fácil deshacerme de una de ellas.

Dándole vueltas y más vueltas, encontré una especie de solución. Pero sólo funciona si confías lo suficientemente en la persona para saber que no te engañaría, porque has de confiar en que al dictársela mediante el método que te voy a exponer, él no la estará escribiendo en un lugar intermedio para poder acceder a ella posteriormente (normalmente usará la casilla ofuscada donde meter la contraseña).

Y lo describiré con un breve ejemplo. Podrías dictárle tu contraseña de este modo:

¿Habrías deducido que este conjunto de instrucciones dan como resultado la contraseña 'pepito'?

Jejeje, hombre, es un trabajo un poco engorroso, pero podríamos programar una pequeña aplicación que generase aleatoriamente toda esta basurilla para una contraseña determinada, y así ahorrarnos el trabajo de inventarnos todos esos rodeos para evitar que el "hombre de en medio" descubra el término que le estamos indicando.






Al hilo de este tema, muchas veces me pongo a pensar sobre los típicos problemas de seguridad que puede suponer usar contraseñas desde ordenadores ajenos o públicos. Son ordenadores a los que no tenemos acceso y que perfectamente pueden tener instalados los siguientes mecanismos para la captura de contraseñas:
  1. Sistemas espía, que envían lo que estás viendo por la pantalla a un buffer o a otra entidad de la red que puede estar observando.
  2. Key loggers, que monitorizan todo lo que tecleamos y lo deja registrado.
  3. Sniffers, que monitorizan todo el tráfico de la red.


Contra los primeros, nos sirve lo que ya actualmente tenemos en la mayoría de los sitios: las casillas ofuscadas para contraseñas, que colocan asteriscos o puntos en lugar de la contraseña, a medida que la escribimos.

Contra los segundos, empiezan a aparecer sistemas, como el de CajaMadrid, que te obliga a meter tu código con el ratón en lugar de con el teclado. Esta técnica puede estar bien pero lleva asociados otros problemas:


Los del tercer tipo se suele proteger uno de ellos mediante el cifrado (usando HTTPS en lugar de HTTP, por ejemplo). El problema es que quien tiene que implementar esta protección es el administrador del servicio, y no el usuario (a no ser que seamos lo suficientemente avispados y no acomodaticios como para usar una de estas técnicas).

Pensando un poquito sobre todo esto, se me ha ocurrido otro sistema que podría emplearse para protegerse de los tres mecanismos a la vez, pero tendría que implementarse desde el servidor/administrador, no desde la parte cliente. El sistema consistiría en, cada vez que se va a realizar el desafío (preguntar el secreto compartido, la contraseña) al usuario, preguntarle únicamente una parte de la contraseña, por ejemplo: las tres primeras letras, las dos últimas, y el número de letras en total que tiene la contraseña. En cada autenticación se tendrían que preguntar cosas distintas sobre la contraseña, y para que el sistema fuera absolutamente óptimo, debería garantizarse que, aunque se tuviera acceso a todas las preguntas y respuestas que hubiera hecho un usuario en la autenticación, no pudiera deducirse ni calcularse el secreto compartido en la práctica.

Así se evitan ataques man-in-the-middle, key-loggers, y demás. El único inconveniente que tiene es, como es habitual, que el proceso de autenticación se vuelve ligeramente más complejo.

Labels: ,


Saturday, May 27, 2006

 

Quiero ser catalán

Después de saber lo que ha ocurrido en el Senado y en el Congreso con la LPI (que legaliza el Canon Digital, algo aberrante en una sociedad que los políticos pretenden que sea sociedad de la información), no me queda otra que soltar un "chapó" por el testimonio del Sr. Jordi Guillot, de Iniciativa per Catalunya Verds, que reproduzco a continuación:


Gracias Señor Presidente.

Señorías.

Los dos senadores de Iniciativa per Catalunya Verds votaremos no a ese proyecto de ley porque estamos en contra del canon digital.

Intervengo, pues, en nombre de los senadores de Iniciativa per Catalunya Verds para dar por defendidas nuestras enmiendas y para justificar nuestro voto contrario a este proyecto de ley.

El proyecto de ley por el que se modifica el texto refundido de la ley de propiedad intelectual es fundamentalmente la ley que regulariza y amplia el llamado canon digital.

Estoy absolutamente de acuerdo en que hay que proteger los derechos de los autores, artistas, editores y productores. Deben ser remunerados por su creación.

Soy consciente de los costos que representan la piratería y las descargas ilegales de obras sujetas a derechos de propiedad intelectual.

Dos ejemplos que permiten ver la gravedad del problema, en el último año y medio la piratería audiovisual ha pasado del 5% al 60%. En el 2005 en España se copió ilegalmente 350 millones de canciones. Toda esta situación hace más comprensible la determinación de las sociedades de gestión en la defensa de los derechos de los creadores. Pero sinceramente, señorías este canon no es la solución. Algo pasará para que tantos estemos en desacuerdo con este canon sin tener por ello intereses inconfesables y me quiero referir a las casi cien mil firmas contra el canon presentadas en el Senado hace pocos días

Un canon indiscriminado no se puede justificar en base a la necesidad de compensar las pérdidas que el desarrollo tecnológico genera a quienes crean los contenidos. Una afirmación así al no poder ser generalizable no es válida.

Como sentenció la Audiencia Provincial de Madrid, "confuso derecho es este en el que se cobra el canon a cambio de una actividad prohibida."

El canon de copia privada es un sistema manifiestamente ineficaz e imperfecto. Esta es la principal conclusión de un dictamen elaborado por la Comisión Asesora sobre la Sociedad de la Información, presidida por Manuel Castells, uno de los mayores expertos mundiales en este campo. Sigue el informe, " es un canon injusto e indiscriminado, no frena la piratería y nos hace responsables a todos de ella. El canon puede afectar seriamente al desarrollo de la sociedad de la información y encarece el precio de los productos. Hoy en día, representa el 50% del precio del CD y el 31% de un Mp3."


Lo único que no me ha gustado es que ha llamado "descargas ilegales" a lo que todos conocemos por P2P, y que todos sabemos que son legales porque es copia privada y no hay ánimo de lucro.

También me gustaría citar unos párrafos de la Carta a un autor español que ha escrito Javier Cuchí en la web de la Asociación de Internautas:

El sistema, armado de hipotecas, de trabajo precario y de unos medios verdaderamente criminales, ha aprendido y perfeccionado hasta extremos inauditos las lecciones de los carceleros de los campos de extermino nazis y soviéticos. Si éstos aprendieron cómo un recluso podía -materialmente, literalmente- vender a su madre o a sus hijos por quince gramos de carne podre disimulada en el fondo de la sopa de [pocos] nabos, el sistema moderno ha aprendido que ni la carne hace falta, que basta con la amenaza implícita de suprimir el pedazo de pan negro y duro del desayuno. Y es tal la perfección alcanzada en esa materia, que ni siquiera hace falta la amenaza: la propia víctima la edifica ella misma. Y así se llega al lujo de llamar democracia al campo de concentración y se asume la perfección carcelaria de no precisar ni siquiera la molestia de ahorcar al díscolo, al rebelde, que pasa a ser incluso útil como contrapunto, como desfogue del preso común y capón que viendo en la rebeldía su propia vergüenza, reacciona contra ella con la risa o con el desprecio: el rebelde es un friki o un anarquista iluso, un pobre pringao que no se entera de las reglas del juego, alguien que nunca llegará a nada. El cénit de la ciencia penitenciaria: el preso investido a sí mismo como el más eficiente y terrible carcelero de sí mismo.

Presos de ese falso y tramposo hedonismo, los ciudadanos vemos pasar ante nuestras narices los más tremendos castigos y hasta pedimos a gritos que nos sean aplicados porque si no el sistema no se sostiene. Y así, tragamos alegres y contentos con las más macabras abominaciones laborales y con el encarcelamiento tremendo en nuestra propia vivienda, de la que ya no heredarán nuestros hijos sino su deuda (y eso si el sistema no nos obliga antes a vender la parte ya pagada para poder sobrevivir con una pensión de miseria, que es la próxima que están pergeñando).

Y entre nuestros democráticos aplausos, el sistema nos aplica, muerto de risa, el castigo, por manos de unos kapos llamados políticos.


Parece incluso de que no esté hablando del Canon Digital, sino también de todas las injusticias a las que nos someten habitualmente a los ciudadanos a día de hoy, y que un sistema estatal republicano con democracia más participativa podría solventar.

Labels: ,


Friday, May 26, 2006

 

Más razones para odiar el Visual Basic

La idea de la plataforma .NET acerca de la interoperabilidad entre lenguajes de programación es fantástica, porque permite que los programadores puedan usar el trabajo de otros sin que usen el mismo lenguaje. Esto es muy beneficioso, sobre todo para el software libre, pues en éste actualmente hay gran diversidad de lenguajes y poca coordinación entre ellos. Por eso, en mi opinión, Mono es la mejor alternativa actual para desarrollar software: todo lo que escribamos se encontrará disponible automáticamente para todos los programadores de .NET, independientemente del lenguaje que éstos otros utilicen. Si nos empeñamos en seguir usando diferentes plataformas de desarrollo, en lugar de diferentes lenguajes bajo una misma plataforma, seguiremos en el nivel de estancamiento de siempre con el software libre.

Es por esto que, bajo ciertas circunstancias, la diversidad sí es mala. Por ejemplo, la diversidad en máquinas virtuales o runtimes (Perl, Python, Java, Mono, ...) hace que el principio de .NET de interoperabilidad sea impracticable (con excepción de ciertos proyectos de conversion de bytecodes de un tipo a otro). Otros podrían decirme: "vale, puestos a elegir una máquina virtual, ¿por qué escoger la de Mono y no otra?", pues porque por el momento es la única que dispone de más de un compilador (porque compiladores a bytecode de Java sólo los hay de lenguaje Java, y compiladores a bytecode de Perl sólo los hay que compilen lenguaje Perl, etc.). Por tanto, usar Mono siempre, y luego escoger tu lenguaje favorito, debería ser lo que idealmente tuviera que hacer todo programador, tanto de software libre, como de privativo (porque también la interoperabilidad es buena en la empresa, aunque ésta desarrolle productos privativos).

Otro punto negativo que encuentro a la diversidad radica ahora dentro de la propia diversidad de lenguajes que soporta Mono. A pesar de que, como ya he dicho, esto es muy beneficioso en general, en mi opinión no lo es sólo en ciertos casos particulares, por ejemplo en aquellos en los que nos encontramos con un lenguaje de programación de muy baja calidad, como es el Visual Basic.

Reconozco que Visual Basic fue un gran paso en la programación, pues brindó la oportunidad de adentrarse en este mundo, de una manera no excesivamente compleja, a mucha gente (quizás haya gente que esto en sí le parezca algo malo, pero en este caso me tengo que negar porque yo también empecé con este lenguaje, mucho antes incluso de empezar la carrera). Pero en Visual Basic no todo eran bondades: algunas de sus capacidades supuestamente pensadas para hacer más sencilla la programación, a la larga generaban problemas de mantenimiento y malos hábitos al programador. Es decir, el programador podría hacer un desarrollo bastante rápido, a costa de prolongar sus fases de testeo y de revisión.

Un ejemplo de esto es la permisividad que tenía Visual Basic 6: la opción de no declarar las variables generaba en innumerables ocasiones comportamientos inesperados de la aplicación como consecuencia de una simple refactorización de un fragmento de código (ejemplo: si cambiamos el nombre de una variable, en lugar de considerar el compilador un error al encontrarse el nombre antiguo de la variable en otro lugar, no notificaba el error y presuponía que el programador quería inicializar una nueva variable vacía).

Sin embargo Visual Basic introdujo un concepto que ya disponía Java: la administración automática de la memoria. Y de aquí surgió C#: de intentar hacer un C++ que tuviera la facilidad de Visual Basic (y casualmente salió algo muy parecido a Java). Sólo por el mero hecho de crear C#, Microsoft estaba reconociendo que Visual Basic era un lenguaje muy malo. Pero no quiso desterrarlo totalmente, porque muchos malos programadores seguían programando con él, y lo que hizo fue hacerle un lavado de cara: intentó corregirle los problemas más acusados de los que adolecía y le denominó "Visual Basic .NET".

Esta estrategia seguramente le permitió a Microsoft no perder cierta cuota de mercado que de otra manera habría permanecido en VB6 durante mucho tiempo hasta migrar a C# (o incluso a Java). Y respeto bastante esta decisión, alegrándome de que además se quisiera mejorar un poco este lenguaje. Sin embargo, a la nueva versión le sigo viendo problemas, y creo que estos problemas vienen inherentemente provocados porque el lenguaje, en el fondo, es malo y es difícil parchear algo que inicialmente es de baja calidad (es decir, que algunos de estos problemas que yo sigo viendo podrían tener solución, pero otros no).

Y voy a ser bastante explícito; en la versión VB.NET 20005 se dan los siguientes problemas:

- VB.NET permite inicializar variables de tipo Structure a Nothing, mientras que hacer lo equivalente en C# (asignar null a una de tipo struct) es un error de compilación. ¿Por qué iba a permitir un lenguaje igualar a NULL una variable que no es un puntero? Aunque los lenguajes administrados no disponen de aritmética de punteros, por debajo, un objeto en .NET es una referencia a una posición de memoria si representa la instancia de una clase (un objeto), o bien NULL si aún no se ha instanciado. Las estructuras no son clases, y por tanto las instancias de ellas no son objetos: ¿qué sentido tendría entonces igualarlo a null? Sería como si quisieramos igualar a null un entero, cosa que ahora es posible en C# pero mediante Nullable Types, es decir, indicando que el tipo es int? en lugar de int, pero para ello el programador ha de explicitarlo. Una vez más, tenemos entonces que en VB.NET se hace uso de Nullable Types sin que el programador lo haya solicitado en absoluto.

- Al usar un campo no inicializado de una variable de tipo estructura (Structure en VB.NET y struct en C#), VB.NET notifica una advertencia (warning) mientras que C# notifica un error. ¿Y por qué ocurre esto? Porque VB.NET automáticamente inicializa por omisión los valores de una estructura si se le iguala a Nothing (cosa que permite como ya hemos visto en el punto anterior), y por tanto, debe permitir al programador usar esos valores por defecto. Esto, que podría ser una fuente de problemas en etapas posteriores al desarrollo, no se ha tenido en cuenta, y por un momento cuando me topé con esta ambigüedad llegué a pensar (por indicación de un programador de este lenguaje) que en VB.NET no hacía falta reservar memoria con New ya que lo hacía automáticamente el compilador si asignabas la variable a Nothing y usabas uno de sus campos (pero en realidad esto devuelve un NullReferenceException, menos mal, VB.NET no es tan malo; lo que estaba ocurriendo es que creí que el fragmento de código que no estaba arrojando esta excepción hacía referencia a una clase en lugar de a una estructura). Vamos, que el programador de VB.NET está tan mal acostumbrado por su propio lenguaje que cualquier cosa a la que no le encuentra explicación presupone que es causada por una "feature" del lenguaje en lugar de por un "bug".

Código de ejemplo de los dos últimos puntos:

C# code-snippet:

using System;
using System.Collections.Generic;
using System.Text;

namespace Cesharp
{
public struct Pepe
{
public string sJuan;
public string sLuis;
}

class Program
{
static void Main(string[] args)
{
Console.WriteLine("begin");

Pepe oPepe;// = null;
oPepe.sJuan = "soy Juan";

Console.WriteLine("Juan: " + oPepe.sJuan + " | Luis:"
+ oPepe.sLuis // línea conflictiva
);

Console.WriteLine("end");
}
}
}


VB.NET code-snippet:

Structure Pepe
Public sJuan As String
Public sLuis As String
End Structure

Module Module1

Sub Main()

Console.WriteLine("begin")

Dim oPepe As Pepe = Nothing

oPepe.sJuan = "soy Juan"

Console.WriteLine("Juan: " + oPepe.sJuan & " | Luis:" & oPepe.sLuis)

Console.WriteLine("end")

End Sub

End Module



- Al tratar con Visual Studio .NET 2005, el generador automático de código de Visual Basic no escribe por omisión el Namespace, tal y como hace con C#; lo que redunda en que el programador de VB no tienda a estructurar su código correctamente en una jerarquía de ámbitos (o incluso que ni siquiera conozcan lo que es un "ámbito").

- El modelo de eventos en VB.NET varía bastante con respecto a C# (comparado con otras áreas en las que sólo varía la sintaxis y apenas la semántica) y en mi opinión éste es bastante más complicado. Con sólo decir que por culpa de esta forma de implementarlo, VB.NET contiene muchas más palabras reservadas que C# (el cual las sustituye normalmente por simples operadores)... ejemplos: Handles, AddressOf, ByVal...

- Visual Studio .NET 2005 adolece de ciertas carencias técnicas actualmente referentes a la interoperabilidad entre lenguajes que permite .NET. Por ejemplo: el comando "Go To Definition" sólo funciona entre proyectos del mismo código (si se hace desde código C# apuntando a una clase de VB.NET, el Visual Studio abre el explorador de ensamblados/proyectos o un pseudo-archivo de definición al que le subtitula con la coletilla "[from metadata]").

- Y muchos más que iré añadiendo a esta lista a medida que me vayan surgiendo... (BTW, ¿es la fealdad de su sintaxis un inconveniente válido? ;)


En otro orden de cosas, el compilador de Visual Basic.NET de Mono no está terminado, por lo que usar este lenguaje, de momento, implica problemas de portabilidad. Y una de las razones de que este compilador no se le cuide tanto como al de C# quizás sea que en general los buenos programadores le tienen tanta tirria a este lenguaje que prefieren no verlo ni en pintura. ¿Por qué iban a malgastar esfuerzos en desarrollar un compilador para un lenguaje así? Sin embargo, desde otro punto de vista sí puede ser beneficioso en pro de la portabilidad (para proyectos o equipos que ya estén usando VB.NET y por tanto no se encuentren ya en la situación inicial de decidir lenguaje o descartar lenguajes), ya que permitiría que más programadores de .NET pudieran usar Mono y eso traería más aplicaciones al mundo de software libre (a pesar de que, en teoría, no habría impedimento práctico en ello porque el resultado de lo que compilen es lenguaje intermedio que puede ser interpretado perfectamente por el runtime de Mono). Es por esto por lo que uno de los proyectos de Mono en las becas de Google Summer Of Code es terminar este compilador.

Le ofrezco mucho ánimo al programador que se vaya a encargar de esa tarea, pero al resto os aconsejo que migréis cuanto antes a otro lenguaje distinto de VB.NET. Ocurre una situación análoga a las API's de System.Windows.Forms: es deseable tenerlas implementadas en aras de la portabilidad, pero para desarrollar proyectos desde cero es mejor GTK# porque es técnicamente superior (por ejemplo, el sistema de layout que tiene no es como el de SWF que funciona solamente con coordenadas absolutas, lo que permite un redimensionado automático de todos los controles sin dolores de cabeza para el programador), y porque (ya sin hacer referencia a la analogía con VB.NET) es una parte de la API no estandarizada en el ECMA que podría desembocar en posibles problemas legales (donde existan las patentes) para su implementación.


Moraleja: la diversidad [de lenguajes] y la compatibilidad [en pro de la portabilidad] son buenas, pero hacer la buena elección es algo aún mejor.

Post-moraleja: además de ser un detractor de VB.NET, también lo soy de los lenguajes no estáticamente tipados.


ACTUALIZACIÓN: Resulta que, para más inri, los programadores de VB son tan comodones que debieron pedir a Microsoft en su día cierta compatibilidad hacia atrás de algunas funciones, palabras clave y sintaxis específicas que pertenecieron al legado de VB6, es decir, cosas absolutamente obsoletas y nada equivalentes a la API de .NET. ¿Qué ocurre? Que los programadores no dejan de quitarse los malos hábitos de usar este tipo de cosas porque el Visual Studio .NET no incluye una opción para descartar la librería que permite todo esto (Microsoft.VisualBasic.dll), y además esto va también en detrimento de la portabilidad. Más información aquí, y cómo evitarlo.


Actualización: Una vez más, amplío esta entrada con lo que podría ser el peor error de diseño de este lenguaje: ¡¡¡NO HACE FALTA HACER CASTS!!!

Como lo oyes, por ejemplo, la clase System.Random, cuyo constructor recibe un Integer, puede ser instanciada pasándole un tipo Long (DateTime.Now.Ticks, por ejemplo), sin que se queje el compilador (obteniendo un bonito error en tiempo de ejecución cuando pongas el código en producción). Otro ejemplo: tienes una función que devuelve Boolean, la refactorizas y le cambias el tipo de retorno por Integer, recompilas y ¡¡¡¡no da ningún error!!! (con los lenguajes decentes, el compilador te avisa lo que tienes que cambiar cuando haces una refactorización que pueda afectar a otras zonas de código).

¿A qué os recuerdan estos comportamientos tan patéticos? BINGO! ¡A los lenguajes dinámicamente tipados!

La próxima vez que me pregunten por un lenguaje dinámicamente tipado que compile código intermedio del CLR no responderé Ruby.NET ni JScript.NET, ¡responderé VisualBasic.NET! ¿Y un lenguaje de scripting? Ya no diré Boo, diré VB.NET.

Labels: , , ,


Tuesday, May 16, 2006

 

Migración de librerías Gnome al mundo GTK

Parece que en el proyecto Gnome se están moviendo bastante para conseguir hacer las cosas lo más multiplataforma posible. Un ejemplo es esta entrada del wiki títulada LibgnomeMustDie, que consiste en una página de progreso sobre las migraciones de implementaciones de cosas desde la librería de Gnome a otros ámbitos: GTK para temas de interfaz gráfica, y glib para temas nativos, más cercanos al sistema operativo.

Un buen ejemplo de esto es el nuevo control para los iconos de la barra de sistema (que en Linux se llama "el área de notificación"), que si nos fijamos aparece como novedad en la lista de cambios de la nueva y reciente versión 2.9 de Gtk. Esto me resulta muy útil y además viene a responder a una pregunta que hice hace tiempo, preguntando si existía una cosa parecida, en la lista de MonoHispano:

(...) pues yo esperaba una librería de propósito más general, es decir, que
fuera multi-escritorio (que valiera también para KDE, por lo menos,
además de Gnome) e incluso que fuera multiplataforma, para no tener que
sacrificar la "multiplataformidad" de tu aplicación sólo para que pueda
usar la barra de sistema (o área de notificación de estado, en este caso).


Bueno, no creo que valga para KDE hasta que no metan mano los de FreeDesktop, pero algo es algo de momento. (Por cierto, debería haber escogido el término "portabilidad" en lugar de ese horrendo aunque sarcástico "multiplataformidad".)

Actualización 23-NOV-2006: Otro widget interesante es el que nos brinda la librería LibNotify, la cual al parecer es parte del proyecto Galago. Es un pequeño popup de notificación parecido a los que se ven en el MSN Messenger cuando algún conocido se conecta al servicio. Está siendo muy usado ya en muchos proyectos de software libre, por ejemplo NetworkManager, aMule (capturas) y Galaxium (y parece que Banshee también). Estaría bien que lo incluyesen en el core de GTK+, y así pudiera ser multiplataforma.

Labels: , , ,


Saturday, May 13, 2006

 

¿Caos inevitable?

No queria hacer de este blog algo eminentemente político, pero es que cuando te tocan la moral, es difícil callarse.

Ahora le toca al turno de cómo las esferas de poder quieren coartar la libertad de expresión. ¿Cómo? Queriendo criminalizar a los comunistas en el Consejo de Europa. ¿Quieren equiparar a los comunistas con terroristas? ¿Pero es que no han entendido nada? ¿No han estudiado historia? ¿No saben que el hecho de que existan actualmente dictaduras comunistas no convierte a esta ideología en anti-democrática?

Por favor, firma aquí este manifiesto en contra de esta medida. A la hora de firmar, puedes poner un comentario opcional. Yo no me encontraba inspirado pero mi padre (quien me envió el enlace) sí lo hizo y no puedo estar más de acuerdo con él:

La sociedad capitalista no tiene futuro porque en su verdadero propósito que es el de mantener esclavizados bajo el yugo de sus dirigentes al resto de la sociedad, ahora han creado la globalización y las multinacionales como sustitutas de la esclavitud, el feudalismo y el absolutismo, ya que ahora están mal vistos, y que funcionan bajo un sistema económico basado en un consumismo frenético y una competitividad que hace que los trabajadores tengamos jornadas laborales extenuantes de alto estrés, y esto solo conduce a agotar los recursos del planeta y a que esta sociedad tarde o temprano se precipite en el caos. Un modelo social más justo es absolutamente inevitable, conclusión a la que se llega por simple análisis, el dilema está en si podrá alcanzarse de forma gradual sin un derrumbe caótico del modelo actual, lo que implicaría un gran sufrimiento humano como ha venido ocurriendo a lo largo de todas las épocas de la historia sin excepción alguna. Acaso ese caos es inevitable e implica la desaparición de la especie humana provocada por la irresponsabilidad, la avaricia desmedida y la satisfacción por el poder y el dominio de algunos de los integrantes de la misma. El intento de criminalizar a los comunistas no es más que otro paso más en su estratagia de evitar lo a la larga inevitable .... ¡Qué poco inteligentes son!

Para finalizar esta entrada, sólo recordar a los escasos lectores que debo tener que este domingo es la sentada por una vivienda digna, la cual no va encabezada por ningún partido político. Yo por supuesto estaré allí.

Labels: ,


Saturday, May 06, 2006

 

La simbología nazi/fascista es ilegal; la republicana NO

Es increíble la represión que se lleva a cabo a partir de las esferas de poder, ya sea desde los senos o militantes de los partidos políticos, como desde las propias autoridades.

Y es que, debemos recordar, que la promulgación de un régimen republicano no es para nada análogo a la simbología nazi/fascista. Esto que de entrada debería parecernos completamente evidente, nos lo recuerda esta sentencia del Tribunal Superior de Justicia de Madrid, por si acaso.

Aprovechando esta entrada, voy a dar un enlace bastante interesante: Contra la monarquía. Y no sólo me parece interesante con respecto al contenido, sino también por su elevada calidad técnica: su diseño es inmaculado (al menos para el mejor de los navegadores) y el manifiesto se ofrece en un formato estándar y últimamente ratificado como norma ISO.

Actualización: Otro enlace que no tiene desperdicio sobre la exaltación del fascismo por parte del PP.

Actualización 30-SEP-2006: Parece que la historia se repite, y esta vez por parte de la Guardia Civil. Algunas perlas de la noticia:

Los agentes consideraron que su exhibición vulneraba la Constitución. IU denuncia que es la benemérita quien ha pasado por encima contra la Carta Magna.
(...)
Una vez dentro los agentes pidieron al edil de Izquierda Unida Antonio de la Flor Grimaldi, presente en el local, que procediera a retirar la bandera tricolor que suspendía de un biombo al considerar que su exhibición, aun dentro de un recinto privado, es anticonstitucional.
(...)
Las direcciones local, provincial y andaluza de Izquierda Unida han respaldado la actuación del concejal de Izquierda Unida al negarse a retirar la bandera y censuran lo que consideran que ha sido "un abuso de autoridad y un uso deleznable de un uniforme público".
(...)
La formación política también ha recordado que la exhibición de una bandera republicana no es ilegal ni anticonstitucional, ni siquiera en la vía pública.
(...)
En el año 2003, el Tribunal Superior de Justicia de Madrid ya dio la razón a IU y se la quitó al ayuntamiento de Madrid, basándose en los artículos constitucionales apuntados anteriormente.


Actualización 28-DIC-2006: Parece que a algunos anti-republicanos no les es suficiente este conglomerado de referencias para asumir la verdad del título de esta entrada. He oido de algunos que usan de referencia el hecho de que esgrimir una bandera republicana en público sea legal, precisamente, para argumentar que el hacerlo con una bandera franquista lo es también. Pues permítanme decirles a estos señores que están equivocados, no se puede comparar una simbología con la otra ni hacerlas equivalentes analógicamente, como bien dice este artículo, el cual voy a citar:

Por el contrario, la simbología fascista, tanto en banderas u otras formas, sí que es ilegal. Y lo es porque no les protegen los artículos y leyes referentes a la libertad ideológica o de expresión, sino todo lo contrario. Según un formalismo tan puro como absurdo, igual que es legal la ideología, expresión y militancia republicana debería serlo también la fascista. Pero esto no es así por una razón material, es decir, de contenidos: los fines republicanos y sus medios no tienen nada que ver con los fascistas. Mientras que el republicanismo aspira a la democracia, la libertad y la paz, el fascismo es la negación absoluta de estos conceptos (cualquier estudiante de la ESO con lo que sabe de Historia puede ratificarlo, y por supuesto cualquier catedrático de Historia). La experiencia histórica del nazismo en Alemania, Mussolini en Italia o Franco en nuestro país es prueba de que el fascismo, en sus diferentes manifestaciones, y según grados, significa anulación del pluralismo político y la democracia, represión política de los demás partidos e ideologías, uso sistemático de la violencia, exclusión sociopolítica (y eliminación física incluso) por motivos de raza, etnia, ideológicos o de capacidad física o psíquica, y uso de la guerra como instrumento de política exterior. Dado que la Constitución de 1978 establece "como valores superiores de su ordenamiento jurídico la libertad, la justicia, la igualdad y el pluralismo político" (art. 1.1 CE) cualquier forma de fascismo es inconstitucional e ilegal precisamente por ir en contra del primero de los artículos de la propia Constitución. Y los constituyentes de 1978, y los diferentes parlamentos que desde entonces se han sucedido, no han sido ni son tan tontos como para dejarse engañar por un formalismo que, pretendiendo ampararse en la libertad ideológica y de expresión, incitase y se organizase precisamente para acabar con esas libertades y derechos y de paso con la propia Constitución y sus valores. Cualquier persona mínimamente formada sabe que ningún derecho es absoluto, sino que todo derecho ha de entenderse en su necesaria correlación con los demás derechos y el contexto social en que se ejercita. De este modo, el derecho a la libertad de expresión, por ejemplo, está limitado por el derecho a la seguridad, al honor, a la vida y a la integridad física, derechos que son reiteradamente violados por el fascismo cuando enarbola banderas referentes a contenidos racistas, xenófobos, homófobos o que exaltan periodos de la historia en los que se asesinaba a personas por sus ideas políticas.

Labels: ,


Tuesday, May 02, 2006

 

Prodler 3.0

Estos días me he puesto a empezar un pequeño proyecto que tengo en mente desde hace mucho tiempo: la versión 3.0 de Prodler, que no es, ni más ni menos, que lo que en su día fue mi proyecto fin de carrera: un CMS vía web que programé con PHP4, sistema de plantillas Smarty, especificación XHTML, estilos CSS (multi-skin), unas librerías agnósticas de acceso a base de datos llamadas DBX (aunque en producción utilicé MySQL), JavaScript no intrusivo, internacionalización (i18n) mediante GetText, etc.

Siempre he tenido ganas de ir actualizándolo poco a poco (por ejemplo el cambio más inmediato era pasarlo a PHP5) pero mis buenas experiencias con C# y Mono han hecho que cambie el chip completamente y que me entraran ganas de rediseñar completamente su arquitectura.

Y ya estoy empezando: usaré mi arquitectura predilecta, con C#, pero no ASP.NET sino Maverick.NET con plantillas XSLT de transformación XML en XHTML. Para los datos usaré DB4O y para la internacionalización usaré un método casero que me estoy montando mediante XSLT. Y todo esto lo pondrá en funcionamiento el motor de Mono, el módulo mod_mono para Apache (AutoHosting activado), y por debajo una SUSE 10.1 coordinándolo todo.

Prodler 1.0 estaba hecho con las siguientes tecnologías, la mayoría propietarias: IIS + ASP (HTML) + MS Access + JavaScript...
Prodler 2.0 fue un cambio radical de arquitectura a sistemas basados en software libre, usando PHP, Apache, MySQL.
Y ahora Prodler 3.0 vuelve a cambiar para basarse en una tecnología (.NET) que inicialmente fue creada por una empresa que crea software privativo mayoritariamente (Microsoft), pero que puede seguir basándose en software libre gracias al proyecto Mono.

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