Carlos Ble

Carlos Ble

I am a professional software developer, I solve problems.

I also teach and mentor developers to build better software.

Developing software since 2001.

Can I help you?

  • Do you need high quality tailor-made software?
  • Need training on TDD, clean code or refactoring?
  • Do you need a technical consultant?
  • May I pair with you to write better code?

Events

Upcoming training courses:

  1. TDD - [en Español] - 6 y 7 Octubre
    Gran Canaria
  2. TDD - [in English] - October 20, 21 & 22
    London, UK
  3. TDD - [en Español] - 29, 30 y 31 de Octubre.
    Madrid, Spain

Conferences:

  1. I'll be at the Agile Testing Days 2014
  2. I'll be at the London Test Gathering Workshops.

Archive for the ‘Free/Libre Software’ Category



PDF manipulation…. oh my god!

I am using LeanPub to create some manuals and it's a very nice service.  You just have to use Markdown to write your document and it generates a good looking pdf document from it. Well, as far as I've read today it's actually kramdown a superset written in Ruby. Everything was fine but that my partners wanted to add a custom header image in the manual. This is not supported by Leanpub, in fact it's not supported by Markdown as far as I know. So I decided to manipulate the pdf using my preferred OS (linux). It's not easy!

Pdftk (the pdf toolkit) is great!

pdftk  it's a powerful command line tool to manipulate pdfs. The tool that has saved me eventually. Thanks Sid Steward! What I've done is:

  1. Use LibreOffice to insert the header image into an empty document and then save it as pdf (header.pdf)
  2. Use LibreOffice to create a cover for the book (cover.pdf)
  3. Remove the first two pages from my_book.pdf,  generated by Leanpub:
    pdftk my_book.pdf cat 3-end output tmp.pdf
  4. Add the cover:
    pdftk cover.pdf tmp.pdf cat output tmp2.pdf
  5. Add the background:
    pdftk tmp2.pdf background header.pdf output my_final_book.pdf

See more powerful examples of pdftk.

Things that didn't work so well:

  • Xournal: this tool is great when it comes to adding some text to a pdf document among other things. Probably the best pdf tool with GUI I've tried. However, it doesn't support adding images or headers. There is a patch to insert images but I didn't spend the time trying to compile it.
  • PDFedit: looks powerful but I didn't know how to use it. I could remove text from the document easily but nothing more.
  • uPDF: looks interesting but it's buggy,  like experimental. It didn't work for me, freezes when saving the document and the GUI is quite hard.
  • PDF Mod: this one is looking very good! but I knew about it when I already solved the problem and didn't try it out.  The doc says it modifies pdf but I don't know whether it supports headers/backgrounds and things like that.
  • LibreOffice-pdfimport: Right, it opens up the pdf document but it looses its format and images at least for my pdf book.
  • Pandoc: In desperation I tried to generate the pdf myself skipping Leanpub, from the markdown text. Pandoc is brilliant and very powerful converter. Together with latex-beamer it has generated a pdf for me:
    pandoc -t beamer -o my_book.pdf -i my_book.txt
    The problem was that I don't have a nice latex template to use so I just loose all the nice formatting provided by Leanpub.

I also tried two commercial tools for Windows but none of them were very good either.  The prices were reasonable so I though I would just buy them but the trial version was good enough to realize the software wasn't good.

This story has taken me way much time I thought,  I hope you save some time reading this if you face the same problem :-)

 

Individuos e interacciones

Utilizo parte de esta frase del manifiesto ágil para resumir los dos días que la #TLP2k11 nos ha dado oportunidad de ditlp2k11_aeropuertosfrutar en compañia de grandes profesionales. Alberto Perdomo y Alberto Vilches vinieron invitados a Tenerife desde Gran Canaria y Madrid respectivamente. Junto con Yeray Darias y Oscar Moreno, tuvimos ocasión de charlar largo y tendido sobre tecnología, comunidades y desarrollo de software en general. El resultado para mí, muy inspirador como siempre que hay interacción en persona, que es cómo el conocimiento se transmite mejor.

El efecto directo que han tenido para mí estos dias ya se nota: acabo de despublicar el post que escribí hace unos meses rajando de Git. Si alguien quiere recuperarlo seguro que Google lo mantiene en caché tiempo pero @albertoperdomo me ayudó a entender que no era acertado. Aunque ya lo hizo en su día con un comentario al post, su energía en persona cambió mi percepción. Cuando dejamos Git, nosotros teniamos claro que los problemas encontrados quedaban bajo nuestra responsabilidad al no aprender a usar la herramienta correctamente, pero en el blog post le culpaba de los contratiempos que tuvimos. En realidad todo lo que debía haber dicho es que no es fácil de usar, que tiene una curva de aprendizaje alta y que Mercurial me resulta más sencillo. Alberto nos hizo un pequeño tutorial de Git en el aeropuerto que me inspiró a grabar en breve dos screencasts narrados, uno sobre Git y otro sobre Mercurial. Mis clientes me lo llevan pidiendo algún tiempo.

tlp2k11_cenaCiertamente mi blog ya no es el sitio donde puedo publicar lo que yo quiera cuando quiera. Teniendo una media de 100+ visitas diarias cuando no publico nada y entre 400 y 2000 cuando hago un nuevo post (un dia fueron 90.000) , tengo que cuidar más la forma en que me expreso. No puedo publicar en caliente, todo lo más, escribir, releer y publicar un día despues. Si hablo mal de alguna herramienta tendré que hacerlo con los argumentos menos discutibles posibles. Esto no quiere decir que deje de dar mi opinión y que no siga ganando opiniones opuestas pero al menos será más difícil dar lugar a las discusiones fuera de tono. A mi no me parece bien que Linus por ejemplo raje a KDE y Gnome cuando le cuadra y como quiere asi que intentaré no seguir su ejemplo. Logicamente salvando las distancias. Ni soy ni quiero ser una decima parte de mediatico que Linus.

Cambiando de tema, me encantó la frase de @albertovilches: "mi trabajo no sólo debe ser bueno, debe ser excelente" cuando se refería a los desarrollos que hace para sus clientes. Me la voy a copiar con su permiso. He aprendido en las ponencias de ambos que Ruby on Rails y Grails tienen algunos detalles que me gustaría que existieran en Django.Despues de oir a @albertovilches, ya tengo claro que si hay que hacer web sobre stack Java, lo haré con Grails :-)

Otro punto importante fue la guerra de comunidades. Las comunidades de desarrolladores son generalmente como los equipos de futbol. Eres de uno o de otro, y tu equipo es mejor que los demás. Hay demasiado fanatismo. Se dice que la comunidad ágil es fundamentalista porque critica a la gente que no sigue practicas como TDD (o que las sigue pero no lo dice) y sin embargo yo creo que es una imagen distorsionada. Normalmente los más charlatanes de una comunidad, son los que menos se lo curran. Esto ya ocurría con los grupos de usuarios de Linux hace más de 10 años. Se produce endogamia. Cuando un profesional tiene vocación por lo que hace, sus ideas no deberían ser tan distantes de las de otro de igual vocación aunque uno haga Java y el otro Ruby. En el caso Ruby y Java, ambos lenguajes se basan en el paradigma de la orientación a objetos. Un programa bien hecho con Java no debería ser tan distinto de uno bien hecho en Ruby si ambos siguen un buen diseño orientado a objetos. No podríamos decir lo mismo si uno es Erlang y el otro Java. Así que utilizar la comunidad en la que uno participe para tratar de evaluar la profesionalidad de cualquiera de los dos, me parece equivocado.Aunque algunas comunidades como la de PHP se han ganado mala fama, no significa que no haya autenticos profesionales que utilizan PHP. Desde la version 5, ya se puede hacer lo mismo que con otros lenguajes orientados objetos, aunque a mí siga sin gustarme demasiado.

Para llevar la profesión a donde queremos que llegue (que nos dejen de considerar bomberuchos) será cuestión de ser más autocríticos y más abiertos a la hora de intercambiar opiniones con otros colegas.

Sólo me queda felicitar a Innova7 por esta nueva edición de la Tenerife Lan Party, a Yeray Darias (a.k.a Hannibal Smith) por asegurarse que todo salía bien, y a Oscar, Alberto y Alberto por las ganas de trabajar que me contagian y por decir lo que piensan a la cara de una forma educada y razonada.

Es un placer que se hagan eventos de este tipo en casa porque estoy mucho menos estresado que cuando voy fuera :-)

Aprovecho para anunciar que @albertovilches está en la organización de la conferencia Groovy que se hace en noviembre de este 2011 en Madrid: http://greach.es/

La metáfora del cirujano

Robert C. Martin lleva años diciendo que un desarrollador de software debería parecerse más a un médico que a un albañil. No se refiere a connotaciones relacionadas con el sueldo, el nivel de vida o la valoración social. Se refiere a la importancia del factor humano en estas profesiones.

El grado de profesionalidad es más determinante en una operación quirúrgica que en una etapa de una cadena de montaje de una fábrica. Pueden darse excepciones lógicamente pero digamos que te preocupas más de investigar quién te va a operar del corazón que de la persona que viene a pintarte la casa. En ningún momento estoy diciendo que una profesión sea más digna o importante que otra.

Estos días viendo el programa El Cirujano me gustó ver una pequeña parte del trabajo del Doctor Julio Mayol (@juliomayol) y me pareció una metáfora excelente aplicada al desarrollo de software profesional. Veamos algunos matices:









  • El cirujano no opera solo. Además de cooperar con anestesistas y enfermeros, hay algún otro cirujano que le ayuda --> Programa en pareja.
    Si la tarea requiere una concentración y una ejecución importantes, ¿por qué confiamos en que vamos a programarlo igual de bien solos?
  • Antes de abrir al paciente, se han hecho todos los estudios posibles para conocer el problema y sus soluciones --> Analiza y haz los spikes que sean necesarios. Conoce patrones de diseño, etc. Pero ten en cuenta que si el análisis se dilata demasiado, el paciente se muere.
  • En la sala de operaciones cuenta con todo el instrumental necesario y conoce perfectamente qué herramienta debe usar en cada caso --> Domina tus herramientas. Comprende tus herramientas.
  • Desconfía de su capacidad intelectual y es lo más metódico posible para evitar errores básicos. En la operación se ve cómo el Doctor Mayol recuenta las gasas que saca del cuerpo del paciente, para no olvidar ninguna dentro antes de cerrar --> Practica Test Driven Development.
  • Conoce las posibles consecuencias de cada actuación y está preparado para que las cosas vayan mal --> Equivocate pronto, readapta y sigue.
    Es la esencia de la agilidad, fallar rápido para corregir y mejorar.
  • El cirujano no admite que el paciente le diga cuánto puede tardar en terminar la cirugía ni cómo tiene que hacerlo --> Trabaja sin prisa pero sin pausa. Puedes manterner el foco con la técnica del pomodoro.
  • El cirujano sabe que por encima de todo está la salud de su paciente --> Lo más importante es el negocio de nuestro cliente.

Podríamos seguir con una extensa lista de parecidos "razonables" (yo los veo razonables). Cuando veo todas estas medidas, lo que pienso es en profesionalidad. Si queremos que se nos respete como a un profesional de la medicina, tenemos que ser tan profesionales como ellos. Mientras sigamos trabajando sin ser suficientemente rigurosos, seguiremos estando en el lado de la magia y las ñapas.
Steve McConnell dice en Code Complete que uno de los indicadores de profesionalidad es cuando dejas de creer en la magia y te preocupas por entender el comportamiento de tus herramientas. Recuerda que las máquinas de hoy en día siguen siendo deterministas.

La metáfora del cirujano deja de ser válida en muchos aspectos. Cuando cometemos un error básico y entregamos un producto defectuosos, generalmente nadie muere por ello. Esto es positivo y muchiiisimo menos estresante para nosotros. Aunque tambien hay excepciones.
Por el contrario, en nuestro sector los cambios son mucho más rápidos y teniendo en cuenta que aparecen herramientas nuevas todos los días y que a veces te ves forzado a cambiar con rapidez, no siempre puedes dominar la herramienta. Yo mismo me equivoqué hace unos meses con la elección de la plataforma cloud para nuestro proyecto. Sintoma de que hay que seguir madurando profesionalmente. Sin embargo lo importante es la progresión, la superación, la retrospectiva.

Aunque existen situaciones (sobre todo de mercado) que obstaculizan a veces nuestra profesionalidad, la meta debe ser alcanzarla, reconocer su ausencia y perseguir su consecución. Una cosa llevará a la otra. El mercado no nos favorecerá si no lo exigimos nosotros mismos.

Debemos reivindicar nuestra competencia con hechos y no sólo con titulaciones.

Leyendo la lista de ALT.Net hoy me he llevado una grata sorpresa. Hay una empresa de Madrid que ha liberado un framework open source para .Net. Se llama Signum Framework.
La verdad que no lo he podido mirar pero la web está chula. Independientemente de que sea malo o bueno es una buena noticia que haya más gente en España produciendo software abierto.
Espero que les vaya bien y consigan crear comunidad. Yo nunca he conseguido crear comunidad alrededor de mi framework DesktopRails.

Back from the OSWC 08

A couple of days after the Open Source World Conference, it is time to say that it has been a great conference. Awesome!, 9000 people attending, 200 speakers, up to 18 presentations at the same time!. I had the chance to present DesktopRails in half an hour which was very exciting. I am also happy to have meet very nice people that I didn't know in person, like Ismael Olea , Anne Ostergaard or Alfonso de Cala. Nice to meet the guys from Foton, and also Agustin Benito, Kuko from CanaryTek, Alvaro from Cenatic and Rodrigo Salvador from Isotrol.
I hope to be there again next year. Congratulations to the OSWC organization.

Más cosas sobre la OSWC 2008

Ya pasaron unos dias desde que terminó la OSWC de este 2008 y vamos sacando conclusiones sobre el evento. Todos coincidimos en que ha sido sorprendente el despliegue de medios que se ha llevado a cabo en el palacio de congresos de Málaga. En este post os cuento un poco mis impresiones con respecto al movimiento empresarial en el congreso. En primer lugar decir que es muy grato ver que hay bastantes empresas relacionadas con el software libre que están saliendo adelante, creciendo y estabilizandose y muchas de ellas donan a la comunidad su know-how y software con lo cual el ciclo se retroalimenta. Esto es fundamental porque hay algunas empresas, grandes consultoras, que se aprovechan del software libre, pero que no devuelven gran cosa a la comunidad.
La empresas que más me llamaron la atención en este evento fueron Guadaltel e Intecna por la cantidad de puestos de empleo que están generando, la calidad aparente de sus productos y la cantidad de cosas importantes que están haciendo y porque no las conocía. Las otras empresas que más respeto me merecen son Andago, Fotón y Warp, pero estas ya las conocía.

En el caso de Guadaltel, cuentan con unos 40 proyectos libres alojados en el repositorio de la Junta de Andalucía, algunos de los cuales están teniendo un éxito rotundo como es el caso de TREW@. La participación de su presidente en la sesión plenaria del congreso me parecio muy sincera y emotiva y quedé asombrado con la cantidad de empleados que tiene la empresa, aunque ahora no recuerdo la cifra. Por lo que he visto, la empresa desarrolla fundamentalmente en Java y usa mucho Oracle.

En cuanto a Intecna, parece que su producto estrella es Alfresco. Son los únicos partners en España y creo que hacen desarrollos sobre el propio Alfresco según contó uno de sus integrantes en una ponencia. También le pegan a Java y tienen oficinas casi en toda Andalucía. Parece que su principal cliente, es la Junta de Andalucía, como ocurre con Guadaltel. Bueno, esa es mi impresión.

Andago es viejo conocido, y opera en toda España, también trabajan mucho con administraciones públicas. No hace falta que os cuente mucho sobre esta empresa. También desarrollan con Java.

Fotón es para mí en muchos aspectos, la empresa canaria más interesante que se basa en sonftware libre. Estos son los reyes de Ruby on Rails. Por los menos hasta donde yo sé. Permiten a los desarrolladores teletrabajar, y la relación de unos con otros se basa en la confianza. Son muy innovadores. No obstante la administración pública canaria está más dificil y creo que estos no se pueden colgar de esa teta, desgraciadamente. Eso sí, la web habría que currarsela un poquito más, no?

Warp está compuesto por algunos de los desarrolladores más prestigioso en el mundo Gnome y en el mundo KDE. Su producto estrella en cuanto a software libre es Ebox, y ha sido presentado nuevamente en esta OSWC aunque lleva ya tiempo en escena. Lo malo es que es Perl, y ese lenguaje es una pesadilla :-) Eso sí, funciona muy muy bien. Si ellos le dan soporte, yo me fiaría. Esta empresa aragonesa también ha tenido mucho apoyo de la administración pública. Imagino que además de perl usaran python y java o c++.

Casi se me olvida Yaco, porque no me cuadraron los horarios de sus conferencias, pero los compañeros me hablaron muy bien. Trabajan con Python y Django y eso está muy bien porque Python es un gran invento. Creo que viven de la administración pública. Yo no pondría un cartón de huevos en mi web :-) .... bueno igual si son ecológicos si.

La mayoría tienen un perfil común: Su principal cliente es la administración pública y su plataforma de desarrollo es Java. Con la excepción de Foton, que son un ejemplo de lucha y supervivencia. Me gustaría que hubieran más empresas que desarrollasen sobre .Net y Mono, haciendo software libre, porque en mi opinión .Net ha usado el modelo Java para ganarle en evolución y tenemos un runtime maravilloso y libre que es Mono. También me gustaría ver más empresas que no viven de la administración, lo cual significaría que existe un mayor consumo tecnológico y sobre todo de servcios tecnológicos, pero eso parece que aún está lejos.

En el panorama multinacionales, la que sin duda hace más por el software libre es Sun Microsystems. La gente que conozco que trabaja en Sun está encantada. Ellos crearon Java y muchísmas más jcosas, todo lo que empieza por j. Bromas a parte, son los que mayor cantidad de software y bienes donan a la comunidad. La calidad de sus productos es innegable. Son todo un ejemplo a seguir por las demás compañias. Si Sun me contratase y me permitiese teletrabajar, me pasaría a Java sin problema :-)

¿Quién se me olvida?

Alrededor de 60-70 personas en la sala, empecé con muchos nervios la presentación de media hora que me brindó la organización de la OSWC. Afortunadamente, gracias a mi compañero Carlos de la Cruz que me dejó el portatil listo para todo, las cosas fueron saliendo bien y pude exponer de qué trata el framework, con una pequeña demo. El público no pudo dar mucho feedback pero parece que algunos comprendieron el asunto. Todos fueron muy respetuosos y comprensivos. Agradecimientos a Ancor Cruz por estar ahí apoyando y haciendo críticas constructivas. Exponer en un congreso de tanto nivel es un privilegio y una experiencia muy excitante. Estoy muy agradecido a la organización de OSWC y a mi jefe Rodrigo Trujillo de la OSL por habernos financiado el viaje.

El congreso está siendo impresionante, todo funciona muy bien, hay unas 8000 personas asistiendo y no falta de nada. Hay traducciones simultáneas para los ponentes que hablan en inglés, comida, bebida, y las instalaciones son una pasada. En algunas sesiones también hay traducción al lenguaje de signos en tiempo real con proyección gigante en la pared, y también traducción del español al inglés. Realmente estoy impresionado con este evento. En los breaks estoy encontrandome con gente que sólo conocía de oídas y con la que es muy interesante hablar y reencontrándome con otros que hacía años que no veía.
Seguiremos informando

Me complace anunciar que la próxima semana estaré dando una charla en la Open Source World Conferencen en Málaga sobre mi framework DesktopRails. Aún estoy trabajando en la release de la version 0.3 y en la presentacion pero pronto escribiré un post con más información ahora que he recuperado el control de mi blog. Nos vemos alli en Málaga :-)

I am glad to announce that I'll be giving a talk in the Open Source World Conference the next week in Malaga. It will be on Tuesday 21th at 12noon in Sala2. The topic will be DesktopRails, the framework for desktop application development on .Net and Mono. DesktopRails is a fork of Boxerp which is a project I left as I didn't plan to write a framework for any ERP, I just want to focus on desktop development. These days I am working on the release of v0.3 which I hope to finish before the presentation. The wiki is also being updated and populated with documentation.

Al final resultó que hubieron 10 asistentes y con un nivel muy bueno. Todos siguieron el ejemplo y consiguieron ejecutar la aplicación que hicimos con MonoDevelop, un pequeño "encriptador". Gracias a Berto y Choms que estuvieron de apoyo y al los asistentes por estar tan atentos.
Algunos hasta ampliaron el programa. Me sorprendió que siendo tan jóvenes tuvieron tanto nivel. Parece que MonoDevelop gustó bastante a pesar de que teniamos la version 0.14 que es la que hay para Ubuntu y que petaba de vez en cuando. La version 1.0 lleva meses fuera pero sólo está para Suse :-(

Gracias a Innova7 por invitarnos y cedernos un stand, a Rodrigo por su energía y a mis compañeros Quique, Carlos, Ancor y Pablo por la puesta a punto de las máquinas.

La Oficina de Software Libre de la ULL tendrá un stand en la TenerifeLanParty de este 2008. Por motivos de trabajo, de miercoles a viernes estaré por allí ayudando con los talleres y el jueves a las 16h me han colocado un taller de Lenguaje C# y Mono que impartiré en caso de que hayan suficientes asistentes. Basicamente aplicaciones de escritorio Gtk#. Por experiencia en este tipo de eventos imagino que no habrá público en los talleres porque la gente suele ir a jugar a videojuegos. Para dar conferencias o talleres técnicos con éxito hay que ofrecer comida gratis, poner los horarios con mucho tiempo de antelación, darle mas publicidad y estar avalado por una firma grande como Microsoft, Sun, IBM, o alguna de estas. Y si ademas se cobra una buena pasta por la entrada, entonces ya es la bomba.
Pero bueno, allí estaremos para echarnos unas risas.