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 January, 2010



Python Mocker or PyMox?

Update: We have developed our own test doubles framework. It is open source. Please check it out at www.pyDoubles.org

Mocker and PyMox are two isolation frameworks, or test doubles frameworks able to create mocks and stubs. Mocker is not being released frequently but contains pretty much all the features one need to test-drive. On the other hand PyMox is being developed but it's got an ugly Java-like syntax with does not look like Python. I don't say that Java syntax is ugly, in fact, I like it. What I say is that Python's got its own conventions (PEP-8) and PyMox does not respect it.
Which one to use? I think I need the two of them. PyMox is terrible for stubbing out functions. Awful API for stubs and more than that, it didn't work for me sometimes. However, it's great for mocks. Mocker is nice for stubs and powerful although the proxy/patch stuff is weird. I use both, Mocker for stubs and PyMox for mocks :-)

Estoy muy contento y agradecido porque en JavaHispano.org no solo publicaron la noticia del lanzamiento del libro de TDD sino que además en su podcast han tenido a bien hablar del mismo. Creo que este primer podcast que hacen presencial les ha quedado muy bien. Gracias a Abraham Otero y Erick Camacho por los comentarios en el podcast y a Jorge Rubira por hacer este estupendo podcast.

Mistakes adopting TDD

Here is a great article from Scott Ambler on TDD adoption.

The mistakes summary is:
- Not providing sufficient training, education, and mentoring
- Not supporting pair programming
- Not reducing the creation of non-executable detailed speculations early in the project
- Not reducing the confirmatory testing being done by their independent QA/testing team
- Completely reducing initial modeling
- Completely reducing parallel independent testing

What surprises me is "reducing initial modeling". He says modeling at high level specification through agile modeling is important. I've never got into the situation where I had to model. Some high level diagrams are usually useful but is that modeling? I need to understand what is agile modeling.

The documentation on how to upload bulk data to Google App Engine's data store: http://code.google.com/intl/es/appengine/docs/python/tools/uploadingdata.html

How to express relationships between models? How to support utf-8 in the bulk load?
Here is my loader.py

  1.  
  2. from appengine_django import InstallAppengineHelperForDjango
  3. InstallAppengineHelperForDjango()
  4.  
  5. import datetime
  6. from google.appengine.ext import db
  7. from google.appengine.tools import bulkloader
  8.  
  9. from myapp.models import *
  10.  
  11. class MyLoader(bulkloader.Loader):
  12. def __init__(self):
  13. bulkloader.Loader.__init__(self, 'MyModel',
  14. [('country',
  15. lambda x: Country.get_by_key_name(x)),
  16. ('code',
  17. lambda x: unicode(x, 'utf-8')),
  18. ('name',
  19. lambda x: unicode(x, 'utf-8'))
  20. ])
  21.  
  22. loaders = [MyLoader]
  23.  

The cvs:
ES, someCode, someName

The command line to upload the data:
.google_appengine/appcfg.py upload_data --config_file=loaders.py --filename=bulkdata.csv --kind=MyModel .

Problems I had: http://groups.google.com/group/google-appengine-python/browse_thread/thread/b524b5ad2cbecb30

Los días 4 y 5 de Marzo estoy en Madrid impartiendo un curso abierto de TDD. Ya queda muy poquito para esa fecha. El lugar queda en Gran Vía, es una sala con capacidad para más de 20 personas aunque hemos decidido limitar las plazas a 15 para asegurarnos que se puede impartir con la debida calidad.

Si todavía te faltan motivos para venir al curso echa un vistazo a este documento

Escríbemos para inscribirte antes de que te quedes sin plaza! :-)

Más info aquí: http://www.iexpertos.com/es/blog/proximos-cursos-de-tdd-en-espana

Por cierto, hay un 15% de descuento para los que vengan de empresas asociadas a ASOLIF
Tambien hay descuentos del 10% para los suscritos a la lista de Agile-Spain y a la lista de TDD en castellano

Hoy me ha llegado la copia que compré de prueba del libro de TDD el 21 de diciembre, que es igual a la version que se publicó el 11 de enero pero con contenido viejo. Me he llevado una grata sorpresa al ver la calidad del acabado. Ha quedado super profesional. La tapa es brillante y los colores son muy vivos. La calidad de los materiales también es excelente. El tamaño es estupendo para llevarlo en cualquier maletin.
Es ideal para un regalo a cualquier amigo al que le guste la programación :-)

Después de llevar un rato ojeándolo me he dado cuenta de que el margen interior quedó un pelín corto. Una pena. Afortunadamente lo he podido corregir y desde ahora la versión que se puede comprar en lulu.com ya tiene el margen interior medio centímetro más amplio. Lo siento por los 16 early-adopters que se han comprado el libro hasta ahora, aunque les confirmo que el fallo no se nota mucho. Casi nada, no os preocupeis. Lo único es que tendréis que abrir un poco más el libro para leer la palabra que pega a la unión de las dos páginas.
Siento no haberlo podido confirmar antes, la prueba ha tardado casi un mes en llegarme. Parece ser que los envian desde UK.

También he aprovechado para corregir las erratas que nos habían comentado en la web.

Gracias a todos los que han comprado el libro impreso :-)

Several asserts in a single test

Should I write more than one assert in a single test? Most of the time the answer is NO. Each test is expressing a single behavior in the Subject Under Test and usually a single assert is enough to state that. However, sometimes we need more than one assert to complete the verification step. So how do I know when are several asserts allowed?

Ask this questions:
Can I write all these asserts before writing a single line of production code (SUT) so that the minimum implementation satisfies all of them?

The minimum implementation that makes the test pass is really considering a single behavior, or you have to think of more than one flow because of the asserts?

If the answer is "YES" to the first question and "YES, it shows a single behavior" then you are allowed to write more than one assert in the same test.

Sometimes methods that returns lists of elements are good candidates for more than one assert. But not always!

Some people write one assert, then make the test pass and add another assert to the same test. In my opinion the second assert belongs in its own test.

Resumen del último curso de TDD

La semana pasada tuvo lugar la última edición del curso de TDD en Tenerife. Ha sido muy productivo ya que éramos un grupito reducido en comparación con otras veces y encima todos aportaban muchísimo feedback, y se mostraron muy abiertos a las actividades colaborativas.

Convocamos el curso con Java + Eclipse como herramientas de desarrollo y resultó que el 90% no utilizaba Java sino Python y PHP. A pesar de ello no tuvieron ningún problema para aprender y trabajar, lo cual indica que Java también es una buena plataforma para la docencia.

Afortunadamente cada vez tengo menos protagonismo en los cursos ya que las actividades son tan prácticas que consigo que todo el mundo vaya trabajando y que me de tiempo de supervisar y corregir puntos flacos. Por supuesto imparto los conocimientos teóricos pero he descubierto que es mejor dejar que la gente descubra por sí misma sus errores, para que aprendan y se conciencen sobre las técnicas que exponemos en la parte teórica.
En esta ocasión tuvo éxito la idea de rotar las sillas (cambiar de puesto). Lo pondremos en práctica siempre que sea posible :-)

Es estupendo ver cómo algunos asistentes ayudan a otros y ver que algunos pueden enseñarnos cosas a todos.

La novedad en esta edición ha sido la sesión de Gregorio Mena sobre ATDD, donde tuvimos la ocasión de hacer actividades con Concordion de manera que dió tiempo a ver el ciclo completo de desarrollo.

Es una pena que se me escaparan dos para la foto finish :-), casi siempre se me olvida cuando terminamos, con lo bien que queda luego en el blog :-(

Gracias de nuevo a todos por venir!

Web Programming Step by Step

Just wanted to recommend this book:Web Programming Step by Step.

Jessica Miller, one of the authors was my colleague at work in 2007 where I believe she started the book along with her mates. Because I know she is so professional and passionate about her job, I know the book is going to be great. The work has not finished yet. I am asking for a copy to review it and send some feedback before the book gets done eventually.

I will post about the book as soon as it goes live :-)

Próximos cursos de TDD

En vista de lo bien que está marchando el lanzamiento del libro (2500 visitas en la web del libro entre ayer y hoy, y 9 libros vendidos), hemos decidido lanzar la propuesta de cursos para los próximos meses.

Son cursos abiertos para que asista quien quiera. Está pensado para que las empresas pequeñas que no pueden contratar un curso para ellas solas, puedan enviar a varias personas y también para aquellos desarrolladores cuyas empresas no les dan formación o simplemente quieren aprender por su cuenta.

El calendario está aquí

Mi recomendación es pagar la matrícula cuanto antes para asegurarse una plaza y aseegurarse que el curso se celebra. Si no llegamos a los 10 inscritos antes de un més de que empiece el curso, no tendrá lugar.

Gracias de nuevo a todos por la buena acogida que está teniendo el libro.