Suds cache

December 12, 2012

I’m not a fan of cache where they are not needed, because it can turn a simple task into a no-so-simple task, specially when you don’t expect a cache to exists. This happens to suds, the probably best web service access package existing in python. It uses a cache with a default duration of one day stored in /tmp/suds. That cache only cache wsdl and xsd.

I see this feature could have huge advantages to projects using lots of wsdl and xsd under heavy load, because wsdl and xsd don’t change that often,  however its default values could lead to a headache, because you (at least not me) don’t expect to be a cache at all, and, after you realize there are a cache, you wouldn’t expect to be stored in disk.

To purge the cache, well in my case just the entry of the wsdl I need to be reloaded, it works to remove the file containing it.


Django signals and fixtures

December 10, 2012

Django signals are one of the more powerful tools we have. They let you focus in what you want to do, and the keep you dry. They can be also a real nightmare when there are lots of them, not well documented, and even one signal could perform tasks that sends signals to other handlers. Under this circumstances testing is your only ally, but creating fixtures is a tedious work, well, creating fixtures that works on medium complex projects is always a pain, but if you have lots of signals connected, then it turns into hell.

As the project is complex, you can’t simply dumpdata, so you must write your fixtures “by hand”. When you do this, and try to load them with loaddata, you realize that some of the database objects you manually created in your fixture, are magically generated when the fixture is loaded, and then, when it tries to load what you wrote, it fails because the data is already on db. The question is that, when your fixtures are loaded, they send signals, so you will need to note this. However the django developers provided us a way to skip those signals when a operation such as syncdb or loaddata is in progress. Whenever this happens, the signal handler will receive an extra keyword in **kwargs raw, so you can use it to avoid running a signal handler like this.

@receiver(post_save, sender=ModelA)
def signal_handler(sender, **kwargs):
    raw = kwargs.get('raw', False)
    if not raw:
        <do whatever>

Unfortunately you need to do this in all the signals you want to skip. I’m considering do it in all the signals handlers that perform database inserts or updates.


El software libre como motor del cambio económico

December 3, 2012

Llevo defendiendo el software libre desde hace tanto tiempo que ya ni me acuerdo. En los últimos diez años solo he utilizado software privativo en muy contadas ocasiones y por motivos de trabajo. En diversas ocasiones es expresado mi opinión de que el software libre puede ser una fuente de riqueza para España y para Canarias en particular. Hoy pretendo ahondar en dicha idea.

Las grandes inversiones en materia de nuevas tecnologías tienen un costo desorbitado para la administración pública. Según la wikipedia en España hay unos 2.6 millones de empleados que cobran su salario de la administración pública. Supongo que a día de hoy al menos la mitad de los mismos tendrán un ordenador en su puesto de trabajo y como mínimo dicho ordenador contará con un sistema operativo (casi siempre Microsoft Windows) y una suite ofimática (casi siempre Microsoft Office). Por supuesto los precios de estos productos cuando se compran en un volumen como este no son los precios minoristas que se manejan en las tiendas, pero aún así sabemos que el Gobierno de Canarias gastó en 2008 3.3 millones de euros en esta materia y en 2012 otros 2.3 millones, en 2015 (el contrato actual solo cubre tres años) gastará otra cantidad que dependerá de como vaya la economía española, si seguimos en una crisis como la que tenemos ahora, supongo que se mantendrá o reducirá, pero si la economía mejora aumentará, porque el pago no está relacionado con el gasto de fabricar un bien, sino que se apunta directamente en la cuenta de beneficios de una corporación americana.

De este dinero parte se la quedará el “Partner” de Microsoft que gane el concurso, parte irá para sostener a Microsoft Ibérica, y otra parte (la mayor) irá a engrosar el balance de resultados de Microsoft, con lo que la repercusión local o nacional de la inversión será mínima. Estaremos enviando el dinero que pagamos los españoles con nuestros impuestos a Estados Unidos.

Con el modelo de software libre se favorece que la repercusión local de la inversión sea mucho mayor, ya que los costes del SO operativo y de la suite ofimática son virtualmente 0, y simplemente se necesita hacer una labor de soporte, formación y adaptación. Incluso aunque el concurso lo gane una empresa que no sea local, el proyecto seguirá generando riqueza localmente, puesto que las personas que lleven a cabo el proyecto lo harán localmente y es probable que las pequeñas empresas locales, que por tamaño no pueden aportar las garantías económicas necesarias, puedan participar en algunos aspectos del proyecto y generar riqueza. Además el gasto iría disminuyendo con el tiempo, puesto que no tiene sentido formar a las mismas personas una y otra vez en lo mismo, y se podría ir desplazando dicho ahorro a desarrollar las mejoras que se detecte que necesite el software.

Además se favorece que la administración no tenga que gastar una y otra vez dinero en lo mismo. Un ejemplo puede ser la LAECSP obliga a que las administraciones ofrezca una serie de servicios electrónicos y todas las administraciones públicas estarán obligadas a cumplir dicha ley. Por poner un ejemplo los 8116 municipios de España tienen un problema similar, pero la mayoría de los municipios grandes han optado por seguir su propio camino, mientras que lo lógico sería trabajar juntos en la “parte común” y tratar las especificidades dentro del marco común ya sentado. Y esto pasa a todos los niveles, también con las 51 diputaciones  provinciales, y las 17 comunidades autónomas y todas los servicios de las mismas (educación, empleo, sanidad, etc.).

Cuando yo comencé a defender el software libre hace ya mucho tiempo, muchas veces decíamos que el software libre era más barato y es una verdad a medias, puesto que sí que es más barato a largo plazo, pero no a corto o medio plazo. Creo que hace ya algún tiempo que el discurso ha evolucionado y muchos somos los que decimos que lo importante no es que cueste más o menos, sino que la repercusión local y nacional de la inversión es mucho mayor. Se va a generar más empleo directo y también indirecto.

En tiempos de crisis hay que hacer más con menos y la idea que está detrás del software libre o del conocimiento libre en general es justamente esa, si en lugar de que cada administración o empresa privada haga todo el trabajo puede sumar con otras entidades que necesiten lo mismo, el precio va a ser menor y además el producto va a ser mejor puesto que se ajustará más a las necesidades concretas de cada empresa.