Moved to own domain

May 2, 2014

After a long time living in wordpress.com. I decided to move to my own hosted domain. You can read more in my brand new blog


Tenerife startup weekend

March 27, 2014

El pasado fin de semana, tuve la suerte de poder asistir a un evento de esos que cambian la forma de ver la vida. En esta entrada voy a tratar de resumir qué significó para mi, poder asistir, y esbozaré algunas de las cosas que aprendí.

Aquellos que me conocen personalmente saben que soy emprendedor por naturaleza, me gusta marcarme nuevos objetivos y soy propenso a aceptar grandes desafíos. Asistir a un evento de esta clase era algo que tenía que pasar tarde o temprano. Desde aquí quiero agradecer a todos los que lo han hecho posible, y no me refiero solo a los organizadores del evento, sino a mi encantador mujer que se hizo cargo de los niños un fin de semana sin mi. De todo corazón ¡GRACIAS!.

Ya metidos en el evento, se mezclan una suerte de condiciones que componen el coctel perfecto para lograr grandes cosas. Por un lado un montón de gente que comparte el espíritu emprendedor, con ganas de trabajar y de hacer algo grande. Por otro un puñado de gente con experiencia en el mundo de la emprendeduría con ganas de ayudar a aquellos que están empezando. En frente un fin de semana sin ninguna distracción en el que trabajar sin descanso.

Lo primero que aprendimos fue que las ideas no valen nada, lo único que tiene valor es el equipo y la ejecución. Esto lo aprendimos ni más ni menos que del señor Carlos Blanco, uno de los grandes de nuestro país.

El segundo día fue una mezcla de altibajos. Llegamos con las pilas cargadas, y una idea clara, y nos pusimos a trabajar raudos y veloces. Lo primero fue identificar los componentes del negocio mediante un lean canvas, tras lo cual comenzamos a trabajar sin más dilación. A mi me toco hacer las veces de director del equipo técnico. El equipo técnico estaba compuesto por cuatro personas y enseguida me di cuenta de que teníamos que subdividirnos. Este día lo pasamos creando un prototipo funcional de la demo, aunque finalmente tuvimos que tirar gran parte del trabajo a la basura, al darnos cuenta de que la herramienta de prototipado usada nos complicaría muchísimo poder aplicar la imagen que queríamos aplicar. A mitad del día, recibimos la visita de los mentores, que nos hicieron ver que necesitamos un growth hacker para conseguir que el proyecto tire para adelante. Además nos mostraron su preocupación por algunas partes del modelo de negocio sobre las que tuvimos que ir trabajando. Como la metodología es Lean quisimos validar las hipótesis de negocio y pasamos una encuesta de la que conseguimos más de 200 respuestas y efectivamente mostraban que el problema que estamos intentando solucionar existe.

El tercer día, gracias al gran Samuel Jorge García y su insomnio, volvimos a la senda adecuada, y pasamos casi todo el día terminando el prototipo del que luego sacaríamos los pantallazos. Fue un día tremendamente interesante, en el que plantemos una estructura de costes muy básica y montamos una presentación para el pitch final con la estructura “Emocional, racional, emocional”. Fue un trabajo intenso y complejo pero los resultados se vieron ya que en mi opinión nuestro pitch fue el mejor de los que se presentaron. No todo en la vida es pitching, y quedamos segundos, el resto de los equipos también habían estado trabajando y presentaron unos proyectos interesantísimos. Espero que todos tengan (tengamos mejor jejeje) mucho éxito.

Me llevo una experiencia irrepetible, un grupo increíble, unas ganas de trabajar inmensas y una pregunta abierta ¿qué hubiera pasado si en lugar de un fin de semana el evento durara una semana o un mes?


Factory Boy

February 18, 2014

I develop a Django application which has been rolling for three years now. I barely have a 40% of code coverage through tests, which is pretty low. When writing tests, the most annoying thing in my opinion is to get a dataset to work with. Using fixtures is the direct way, but it’s not that easy to write them by hand, also it’s difficult to get them in sync with migrations. But we have factory boy to save the day.

I first met factory boy in

As soon as I could, I gave it a try.

I created some Factories

class RolFactory(factory.django.DjangoModelFactory):
    FACTORY_FOR = Rol

    name = factory.Sequence(lambda n: u"rol%s" % n)
    description = u"A test rol"

class CacheFactory(factory.django.DjangoModelFactory):
    FACTORY_FOR = Cache

    id = factory.Sequence(lambda n: n)
    code = factory.Sequence(int)
    document_number = factory.Sequence(lambda n: u"%s" % n)
    name = u"John"
    surname = u"Doe"

You just need to include those attributes that need default values. In my case I included all the attributes not nullable or without a default value. So now I can start using the factories. One interesting thing is that you can use attributes not defined in factory class, but existing in model.

So lets use them a bit

    r = RolFactory.create(name="alumno")
    CacheFactory.create(rol=r)

It’s that simple. If my models are modified, then I may need to modify the factory class, but it would be just in one place.

As factories are classes, you can import and use them where needed, so I guess I may write them under every app directory, not sure if in tests.py file or in a separate file, but that would be another story.


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.


Espíritu emprendedor

November 30, 2012

En España la crisis es terrible, necesitamos encontrar vías para generar economía. En Canarias la situación es un poco más complicada si cabe, ya que hacer coches aquí sería muy caro puesto que todo tiene que entrar y salir por mar o aire. En ese sentido yo pienso que las nuevas tecnologías y particularmente el software sería una fantástica manera de hacerlo por varios motivos. La materia prima es el conocimiento, y el producto se consume virtualmente desde cualquier parte del mundo sin necesidad de enviarlo físicamente allí. Además tenemos un clima privilegiado que nos permitiría importar grandes talentos del norte de Europa y una situación política y fiscal muy buena con la movilidad europea y en menor media la reserva de inversiones de canarias (RIC). ¿Qué falla entonces?. En mi opinión es un problema de cultura.

Crear una empresa tecnológica cuesta mucho dinero, porque se requiere personal cualificado y porque hay que tener fortaleza económica para “aguantar” al menos un par de años antes de comenzar a recibir beneficios. Supongamos que para poner en marcha un proyecto necesitamos a cinco ingenieros durante dos años, asumiendo que les pagamos 20000 euros al año a cada uno (por esta cantidad se puede contratar un ingeniero en canarias, pero no sería suficiente para importar talento) el gasto anual para la empresa en personal sería de unos 150000 euros, es decir que necesitaremos unos 300000 euros para poner en marcha el proyecto con ciertas garantías, esto sin sumar los gastos de tener una oficina y el equipamiento informático necesario, pero sinceramente no creo que estas partidas sean tan elevadas.

El tipo de inversores que existen en Canarias que tienen esta capacidad inversora, no tiene ningún afán de invertir en tecnología, porque no entienden el negocio y además es una apuesta arriesgada (se puede tener mucho éxito o ningún éxito, pero normalmente no se consigue un punto intermedio). Muchos han sido inversores en ladrillo que ahora están apurados y además están acostumbrados a inversiones que se rentabilizan rápidamente. Otros están más centrados en sectores comerciales, importación y demás y otros están en el mundo del servicio (hoteles, restaurantes, etc.). Invertir en algo que no es tangible es un salto importante para ellos.

En otros sitios del planeta, particularmente en Estados Unidos esto no es así. Tienen una cultura distinta. Como ejemplo voy a poner a la empresa Zynga autores de algunos juegos como Farmville. Se fundó en el año 2007 por un grupo de emprendedores. Durante el año 2008 recibe 39 millones de dolares de capital venture y financiación venture. En los primeros cuatro años de existencia sus ingresos estuvieron cerca de los mil millones de dolares. Este año 2012 han tenido que rebajar sus previsiones de ingresos originalmente situadas en cerca de mil quinientos millones de dolares a tan solo cerca de mil doscientos millones de dolares. Esta empresa jamás habría encontrado financiación en España. Todas las grandes empresas de servicios de Internet son americanas (Facebook, Google, Yahoo, etc.) en Europa estamos despertando con cosas como Spotify, pero estamos muy rezagados aún.

Actualmente tengo tres grupos de amigos que están involucrados en procesos de emprendeduría. El primer grupo del que formé parte en el pasado, montó una empresa de servicios y trato de financiar con las entradas provenientes de los servicios el desarrollo de algunas ideas innovadoras, lo malo es que los servicios siempre acapararon el tiempo y nunca pudimos (al menos no en el periodo en el que yo formé parte de la empresa) dedicarnos a innovar de verdad. El segundo grupo de amigos, compañeros de estudios en su día, ha tenido que mudarse en bloque a Amsterdam, donde consiguieron la financiación y el mecenazgo que necesitaban para convertirse en una empresa rentable. El tercer grupo de amigos, también compañeros de estudios en su día, han ganado algún premio local y están buscando financiación en Silicon Valley. Si mis amigos consiguen éxito tributaran y generarán riqueza en Amsterdam y Silicon Valley, mientras que España y Canarias, donde surgieron sus ideas, donde su talento afloró, donde se formaron, solo podrá disfrutar de los servicios que creen.