La deuda técnica

La deuda técnica es un tema importante a considerar en el desarrollo de software. Se refiere a la acumulación de tareas pendientes, como la documentación, el mantenimiento, el refactorizado y la eliminación de código obsoleto. A medida que la deuda técnica aumenta, se vuelve cada vez más difícil y costoso mantener y mejorar el software.

Robot arreglando código

En mi experiencia, hay varias razones por las que la deuda técnica puede acumularse. Una de las principales es la falta de tiempo para dedicar a tareas no relacionadas con el desarrollo de nuevas funcionalidades. A menudo, se priorizan las tareas que producen resultados visibles a corto plazo en lugar de las que tienen un impacto a largo plazo.

Otra razón es la falta de disciplina en el desarrollo de software. A veces, los desarrolladores se sienten presionados por plazos ajustados y optan por escribir código rápido y sucio en lugar de tomarse el tiempo para refactorizar y documentar adecuadamente.

La solución para reducir la deuda técnica es simple pero no es fácil. Es necesario dedicar tiempo y recursos para abordar las tareas pendientes. Esto puede incluir dedicar tiempo cada semana para el mantenimiento y la documentación, o incluso asignar un equipo específico para abordar la deuda técnica.

Además, es importante fomentar una cultura de disciplina y responsabilidad en el equipo de desarrollo. Esto puede incluir establecer estándares de calidad y proporcionar retroalimentación continua sobre el cumplimiento de estos estándares.

En resumen, la deuda técnica es un problema común en el desarrollo de software, pero puede ser manejado si se toman medidas proactivas para abordarlo. Dedicar tiempo y recursos, y fomentar una cultura de disciplina y responsabilidad, son fundamentales para reducir la deuda técnica y mejorar la calidad del software.

Cómo usar raspberry pi pico con PlatformIO

Hace tiempo que trasteo con varias placas de desarrollo que intento integrar en distintos proyectos de IoT, la mayoría relacionados con nomorekeys, el caso es que generalmente he utilizado arduino (el pro micro es mi favorito) o el ESP32 cuando necesito wifi (antes el ESP8266). Hay muchos otros por ahi, como el seeeduino xiao y muchos de Nordic.

Raspberry pi pico pinout

El caso es que tengo mucho código escrito en C/C++ para el entorno Arduino y, resulta, que puedo reutilizarlo en distintos procesadores utilizando un plugin para visual studio code llamado PlatformIO, lo que he ido haciendo para los distintos arduino, ESP y Seeeduino, Hace relativamente poco tiempo me decidí a probar el nuevo MCU de Raspberry, el Raspberry Pi Pico, pero me centre en usarlo con CircuitPython, teniendo unos resultados excelentes y que os recomiendo probar.

Llegado el caso necesité más memoria para un proyecto que inicialmente estaba codificado para arduino pro micro ya que este solo posee 2,5k de memoria RAM y se quedaba muy corta. Revisando lo que tenía por casa me di cuenta que tenía un par de rpi pico por ahí de las pruebas con python y me di cuenta que tenían 264k de memoria (x100 lo que tiene un arduino), tampoco andan mal de precio y tienen todos los pines de entrada salida que necesitaba, así que, manos a la obra… Vamos a ver si podemos adaptar el código de arduino a la pico… Usando PlatformIO.

No voy a entrar ahora mismo ni en cómo instalar platformio ni en como crear un proyecto, eso os lo dejo para vosotros o si me lo pedís lo esccribo más adelante, por ahora partiremos de que eso ya lo has hecho.

Si ya tienes un proyecto hecho con platformio, enhorabuena, todos los cambios que tendrás que hacer es incluir esto en tu platformio.ini:

[env:pico]
platform = raspberrypi
board = pico
framework = arduino

Recuerda poner el #include <Arduino.h> si estás importando un sketch del ide de arduino y ya estaría…

La primera vez que quieras subir el código a la placa tendrás que copiar el archivo firmware.uf2 después de haber puesto en modo boot la placa (enchufala al ordenador pulsando el botón de la misma), yo lo hago con este comando (uso linux)

cp .pio/build/pico/firmware.uf2 /media/$USER/RPI-RP2/

Las siguientes veces ya no hará falta, puedes dar al botón upload directamente y el código compilado se subirá a la placa.

Happy coding!

Cómo dar de alta tu propia librería en el gestor de librerías de Arduino

De un tiempo a esta parte he estado haciendo cositas con microcontroladores y Ardunio (ultimamente con platformio), y el caso es que he querido dejar como librerías libres algunos de los códigos que he generado (o mejorado), como por ejemplo la librería para generar códigos QR en displays OLED o TFT (https://github.com/yoprogramo/QRcodeDisplay). La gestión de librerías en Arduino es una de las cosas que hacen el entorno interesante (en platformio mejor todavía) y es muy interesante tener disponible tu librería en el gestor de librerías de arduino.

Hasta hace poco el hacer que tu librería estuviese disponible para todo el mundo en el gestor de librerías de Arduino IDE era una tarea muy «manual», básicamente poner un mensaje en los foros de soporte de Arduino y esperar por la respuesta… Esto ha cambiado un poquito y podemos encontrar un nuevo método aquí:

https://github.com/arduino/library-registry#readme

Os lo resumo para los que seais impacientes. Los pasos una vez que tengáis el código de la librería en github son los siguientes:

  • Crear una release en github y darle un número
  • Crear un archivo llamado library.properties con el número de versión y los datos correspondientes de las plataformas y dependencias
  • Abrir este enlace para hacer un fork del repositorio: https://github.com/arduino/library-registry/edit/main/repositories.txt
  • Hacer fork del repositorio
  • Editar el archivo repositories.txt añadiendo la url de github del repositorio
  • Hacer click en «Proponer cambios»
  • Crear un pull request

El pull request genera una petición para que un bot revise los cambios, si todo está ok la librería aparecerá al día siguiente en el gestor de arduino, si hay algún problema se puede poner un comentario mencionando a @ArduinoBot o hacer un commit con las modificaciones en el archivo (en la rama de nuestro fork).

Nuestra librería en el gestor de librerías de Arduino

¿Qué hacer cuando Autofirma no te muestra ningún certificado?

En mi día a día, y en el de cada vez más personas, el uso de la firma digital se ha convertido en algo habitual. No solo es la obligación legal de las administraciones al relacionarnos con ellas, sino que también abre un nuevo abanico de posibilidades para usos particulares de lo más variopinto.

Una de las cosas que la administración lleva haciendo, digamos, bien, estos años es proporcionarnos herramientas para que nuestras penas burocráticas sean un poco menores (ojo, esto que digo es muuuuuy discutible), o al menos debería serlo. Para mi, que uso Linux en mi día a día y que solo arranco Windows por obligación, tener una manera de hacer firma digital era fundamental. Y resulta que la administración creó una aplicación en Java que podemos utilizar también los de LInux ¡Bien!

La herramienta se llama AutoFirma y podéis descargarla del enlace que os he pasado antes. No es que sea una maravilla de la técnica, pero puedes usarla de manera bastante sencilla ya que te coge los certificados del almacén de Firefox… O lo hacía.

El caso es que, de un tiempo a esta parte el diálogo para escoger el certificado me aparecía vacío y tenía que cargar el archivo .p12 donde tengo la copia de seguridad del certificado que quería utilizar… Y eso era muy penoso dada la cantidad de archivos que tengo habitualmente. La verdad es que me sorprendió que dejase de funcionar, pero creí que sería algo pasajero… Pero no lo fue.

Si a vosotros os pasa algo similar, os doy la receta para que vuelva a funcionar:

Revisad los perfiles de firefox

Si tenéis más de un perfil en firefox (en mi caso tenía tres porque instalé versiones beta de Firefox 100) AutoFirma se confunde y no coge el correcto… Podéis ver los perfiles que tenéis escribiendo about:profiles en Firefox.

En mi caso, y dado que no usaba los otros perfiles para nada, me bastó ir al directorio .mozilla/firefox de mi máquina y eliminar los directorios que no eran mi perfil principal y luego editar el archivo profiles.ini para eliminar todo rastro de esos perfiles.

Una vez hecho esto (no es necesario reiniciar Firefox si no queréis) ya tendréis disponibles de nuevo los certificados para hacer la firma…

Cerrando el 2021

Dentro de dos meses hará 15 años que llevo manteniendo este blog, una eternidad en cuestión de tiempo tecnológico y una eternidad también en tiempo biológico. Generalmente se usa este último día del año para hacer un resumen de lo que se ha hecho y se ha dejado de hacer en el año saliente y dar la bienvenida a los nuevos planes y deseos para el año que entra… Bien, hoy no estoy de humor para ello (que eso no quita que no lo haga en algún momento), mi retrospectiva será más de estos 15 años de blog que de este año de pandemia continuada. Es más, se cumplen ya 20 desde que se publicó algo bajo este dominio… Y eso requiere un poco de historia.

Compré el dominio yoprogramo.com allá por 2001 poco después de haber contratado mi adsl con terra y con el ánimo de poner una web informativa sobre temas de programación. Yo, como muchos sabréis, me defino como programador, un programador con vocación empresarial y con muchas ganas de hacer cosas útiles por todo el mundo. De hecho, si sentís curiosidad, hay entradas de la web en Internet Archive (os muestro la primera de todas de Agosto de 2001):

En aquel momento firmaba como JaeSoft (Jose Antonio Espinosa) ya que lo que más deseaba era crear mi propia compañía de desarrollo de software, aunque por aquel año yo estaba en otra empresa (Sema Group – SlumbergerSema – Atos) haciendo cosas muy complicadas y muy interesantes para la época.

Intenté reunir personas interesadas en programar y en escribir, muy pocas se apuntaron y mi interés por mantener tantas secciones, incluyendo noticias, trucos y demás cosas que podrían servir para configurar un portal se resintió un tanto cuando perdí parte de los contenidos (aquí una imagen para que veáis como era la cosa en 2004 después de recuperar algunos):

A partir de ese año cambié mi rumbo laboral, abandoné la multinacional en la que había trabajado y me puse por mi cuenta. La web sufrió un hackeo en que, afortunadamente, no perdimos nada (pero publicamos el artículo) y la web pasó a estar patrocinada por la nueva empresa que acababa de fundar (Digimate Computer)… Incluso patrocinaba la web más loca que nunca he publicado, una que se llamaba «quiero mi wii» que me ayudo a conseguir una consola wii en un momento en el que había una escased tremenda de ellas. Fue tanta gente la que quería la wii que tuvimos una avalancha de visitas el poco tiempo que estuvo activa:

Hasta que un día de 2007 decidí cambiar de formato, abandonar el portal para el programador que, aparentemente, no usaban demasiados programadores y me daba muchísimo trabajo mantener y creé (utilizando un wordpress que había aparecido el año pasado) mi blog personal.

Y si hace 15 años que llevo escribiendo en este mi blog, puedo seguir escribiendo algunos más… Intentaré estirar lo más posible mi dedicación al mismo durante este año entrante y, finalmente, os deseo a todos que el año 2022 os sea propicio. Desear es gratis, pero es una buena cosa para variar…

Feliz 2022