pensando en algo sin pensar

Esta fin de semana se publicó en EP[s] un reportaje títulado Corazonadas inteligentes que aborda el tema de la inteligencia inconsciente, a saber: ¿ porqué tomamos decisiones sin elementos de juicio objetivo ? El reportaje contiene una gran publicidad encubierta de un libro titulado Inteligencia intuitiva, cuyo autor es Malcolm Gladwell, el autor de La frontera del éxito y que es uno de mis libros para este invierno. Resulta chocante que en varias ocasiones en el reportaje hablan de Malcolm Galdwell, cuando el apellido correcto es Gladwell, pero eso es cosa de los periodistas.

Creo que existe una relación directa entre la inteligencia inconsciente y la actividad de desarrollar software. De alguna manera cuando eres más productivo, cuando estás en estado de flujo – lo que mucha gente llama programar con el piloto automático -, estás aplicando este tipo de conocimiento. No te paras en cada detalle de tu código porque sabes que lo estás haciendo bien. Depuras rapidamente los errores porque los encuentas enseguida. Tomas decisiones acertadas sin tener que pensar mucho, aunque realmente estás pensando a otro nivel. ¿ Cuantas veces te has levantado por la mañana pensando que tenías la solución de un problema que te tenía amargado ? ¿ O cuantas veces has dejado algo que te parecía imposible para darte cuenta al poco tiempo de que es más fácil de lo que suponías ? ¿ Que hacías en ese lapso de tiempo ?

Del reportaje me llama mucho la atención una cita de Bertrand Russell: Si tengo que trabajar en algún tema difícil, el mejor plan es pensar en ello con intensidad durante un tiempo y después dar la orden de que el trabajo continúe en el subterráneo. Después de algunos meses, vuelvo conscientemente al tema y descubro que el trabajo está hecho.

Algunos meses es mucho tiempo, pero dejar de pensar en algo durante un par de dias muchas veces ayuda solucionarlo.

Anuncios

la camiseta del XAAC

Esta semana me ha llegado la camiseta del XAAC, el concurso de programación xHarbour que ganamos. Y nada más llegar la camiseta, van los fenómenos estos y les da por cambiar la web de xHarbour … y el logo. Pero vamos por partes.

La camiseta es muy bonita. Yo ya tenía 2 que compré en Cafepress, pero de mi talla. La que han mandado ahora – o al menos la que me ha llegado a mi – es de talla XXL y me viene un pelín grande. Así que si alguien tiene una de talla L que me lo diga para cambiarlas.

20050923.jpg

La nueva web de xHarbour está muy bien. Realmente han hecho un trabajo estupendo y se nota el buen hacer y el sentido empresarial de Patrick Mast. Es una web superprofesional, con perlas como el xHDN o el impresionante archiv de Guias Norton.

Pero lo del cambio de logotipo la verdad es que no me ha gustado. Me recuerda mucho al logo de los x-men que leía de joven, cuando el guionista era Claremont y los dibujaba John Byrne. Pero sobre todo es que para mi el logo de xHarbour es verde y azul, como las latas de CocaCola son rojas y las de Pepsi azules. ¿ Alguien se imagina una lata de CocaCola azul ? Pues yo no me hago a la idea del logo de xHarbour amarillo y negro, pero será cosa de acostumbrarse.

tooltips de balón en FWH

Muchas veces la diferencia entre un programa y un buen programa está en los detalles. Por eso, un programador debe visitar con asiduidad los foros del lenguaje o herramienta de desarrollo que utiliza y estar al tanto de cualquier comentario que se pueda hacer sobre el mismo.

Hace un par de semanas en el foro de FWH Antonio Linares publicó la manera de cambiar los tradicionales tooltips cuadrados por unos de tipo balón. Los cuadrados son estos:

20050919a.jpg

Para conseguir los tooltips de balón lo único que hay que hacer es ir al código fuente de la clase Window y quitar un comentario que aparece en la linea 2762 – o simplemente buscar ballon en el prg -. Hay que dejar la llamada a CreateTooltip con el último paráametro a .t.

hWnd = CreateToolTip( Self:hWnd, cToolTip, .t. ) // for ballon tooltips !

Luego se recompila la librería y nuestro programa. Ya tenemos tooltips de balón 😉

20050919b.jpg

actualización del blogroll

Hoy he estado actualizando el blogroll. Tenía verios enlaces cuya actividad había decaido mucho y he decidido quitar algunos y poner otros.

Se quedan los blogs de Joel Spolsky y Eric Sink, gurus en esto de hacer programas y venderlos. A partir de ahi he añadido varios blogs colectivos que presentan actualizaciones varias veces al día. Con Planeta Código podemos leer los feeds de gran número de blogs dedicados a la programación, mientras que en Versión Cero nos cuentan novedades sobre el mundillo de la programación. Más novedades, pero de productos que siempre es bueno ir conciendo lo que la competencia hace por ahí, las tenemos en Genbeta. Por último Barrapunto es un sitio de visita obligada, aunque no se si vale la pena leer los comentarios de las noticias, que ultimamente las aguas bajan revueltas por allí.

Por último hay dos blogs personales que me están llamando poderosamente la atención. El primero es Najarabá, de Joserra, donde cuenta cosas tan interesantes como la manera de dar el salto de una idea a un software. El otro blog lo he conocido esta semana, y se llama Marzembre, ahí es nada, pero merece la pena.

A Jaime lo he subido a los enlaces, junto a la web de alanit y a los artículos de mi primer blog. Aunque lleva tiempo sin postear, seguro que pronto se le enciende la bombilla.

septiembre, el primer mes de curso

Para mi Septiembre es casi siempre el primer mes del año. En verano suelo reflexionar sobre lo que he estado haciendo durante el año anterior y de alguna manera tratar de planificar el próximo. Supongo que ayuda la faceta de docente, que de alguna manera te liga al calendario escolar.

Para este año, la idea es terminar durante el mes de septiembre las nuevas versiones de Cuaderno de Bitácora y el Puchero con la supresión de BtnGet y las altas dinámicas de claves ajenas. Una vez hecho esto intentar queremos jugar en las major leagues: internacionalizar los programas y lanzarnos a vender en el mundo mundial. Antes de eso tenemos que terminar algunas cosas de la web, como la gestión de la lista de correo que se nos está atragantando. Intentamos instalar phplist pero la cosa se complicó, y vamos a probar con dadamail que parece más sencillo aunque menos potente.

Los iconos de los nuevos programas van a ser de iconexperience. Hemos comprado las colecciones Application Basics y Objects & People y estamos adaptando los progamas con los nuevos iconos. Realmente quedan impresionantes… como en esta captura de azeta:

20050914.jpg

Y para este invierno los libros que tengo en cartera son:

usando TDbf

Hasta hace poco nunca había usado nada para manejar DBF que no fueran los comandos y funciones estándar de clipper y luego de xHarbour. Hace unas semanas comencé el desarrollo de una aplicación que tiene que ejecutarse en red y me planteé mirar las distintas clases para manejo de DBF que existen para xHarbour.

Haciendo caso de mi amigo Manolo y de algún otro consejo recibido via messenger me decidí a probar TDbf de Manu Expósito. Me bajé la clase desde su grupo de Yahoo y me puse a probarla. El ahorro de código que se produce al usar esta jerarquía de clases – como a Manu le gusta llamarla – es realmente impresionante. La clase crea automáticamente una data para cada campo del fichero que se manipula, con lo cual no tienes que definir campos ni hacer asignaciones. Además la clase maneja un buffer que es el que contiene estas datas, de manera que puedes cargar el buffer desde tu dbf y guardar los datos con una llamada a un método de la clase. Un mantenimiento básico usando TDbf sigue esta estructura:

IF NUEVO_REGISTRO
   oDbf:Blank() // pongo en blanco el buffer
ELSEIF MODIFICACION
   oDbf:Load() // cargo el buffer desde la dbf
ENDIF

DEFINE DIALOG oDlg RESOURCE "EDIT" OF oParent

REDEFINE GET aGet[1] VAR oDbf:TaCodigo  ;
   ID 12 OF oDlg UPDATE           		;
   PICTURE "@!"                        ;
   VALID Clave( aGet[1], nMode )
...
ACTIVATE DIALOG oDlg	;
   ON INIT DlgCenter(oDlg,oApp():oWndMain)</p>

IF oDlg:nresult == IDOK
   lReturn := .t.
   IF NUEVO_REGISTRO
      oDbf:Insert()
   ELSEIF MODIFICACION
      oDBF:Save()
   ENDIF
ENDIF

Además, Manu está preparando una TDbf Pro para antes de que acabe el año y que estará escrita en gran parte el C, con lo cual irá mucho más rápida que la actual clase. Ganas tengo de verla.