Analizando la migración intraprovincial en Córdoba

Charlando hace poco con Facundo Cruz, sociólogo investigador del Equipo de Investigación Política de la Revista Crisis (EdIPo), le conté sobre un estudio "en joda" que hice una vez, el padronazo cordobés, y recordé un trabajo más útil que supimos hacer desde Open Data Córdoba y que suele ser un tema de interés en la prensa local: analizar migraciones dentro de la provincia de Córdoba basado en los cambios de domicilio, según los padrones electorales. Como Facu se emocionó cuando le explicaba, le prometí que, si me conseguía el último padrón, se lo actualizaría. Así que empecemos por el final. Quedó así:

Leer más…

richterm, capturando la terminal a todo color

Siempre estoy haciendo programitas de línea de comando y siempre quiero mostrar como se ve el resultado de algun comando. Si bien es texto que puedo copiar y pegar, muchas veces prefiero tomar capturas de pantalla de la terminal para mostrar como se ve el resultado, especialmente si tiene colores o algun formato especial.

Cuando estaba escribiendo este post necesitaba una captura, y encontré una manera de hacerlo:

x.com//1983986531972116685

El truco que propuse ahí es usar rich-codex pero, a decir verdad, la CLI de esta herramienta es un bastante complicada para este caso súper común: sólo quiero ejecutar un comando y quedarme con un SVG listo para incrustar en un post o en la documentación.

Así que me armé una mini herramienta más simple: richterm.

Leer más…

Easter-eggs en tu código con texto invisible

Según Wikipedia en español, un "easter egg" es ...

un mensaje o capacidad oculta contenido en películas, series de televisión, ..., programas informáticos o videojuegos. Entre los programadores, parece haber una motivación en dejar una marca personal, casi un toque artístico sobre un producto intelectual, el cual es por naturaleza estándar y funcional. Actualmente, los huevos de Pascua tratan de entretener, buscar nuevos trabajos potenciales, pagar tributo a los ejecutivos o divertir a los programadores.

No sé a quien le hizo creer eso de que un software es "estándar y funcional" al crédulo wikipedista, pero es verdad que la pulsión por poner huevos de pascua en el software es casi tan vieja como el software mismo.

Acá les traigo una técnica que yo descubrí hace varias décadas, en el jardín de infantes cuando dibujabamos con jugo de limón en una hoja en blanco para que más tarde, mágicamente, se revelara el garabato al calor del encendedor de la seño que seguramente había estado fumando en el rincón de las maderitas un rato antes.

Veamos entonces como escribir mensajes en texto (digital) invisible: jugo de limón en su versión unicode.

Leer más…

Ignorando cambios en git localmente

Es bien conocido que en un repositorio de git podemos usar un archivo .gitignore para omitir el seguimiento de archivos que no queremos que se suban (se "empujen") al repositorio remoto. Si un archivo coincide con el patrón de un .gitignore, entonces no se mostrará en un git status para añadir sus eventuales cambios a un commit.

Típicamente se usan para ignorar directorios donde se instalan dependencias (e.g. el virtualenv para proyectos Python generalmente instalado en .venv), archivos temporales generados por el intérprete o compilador, archivos específicos para IDEs, etc.

Son tan comunes que GitHub ofrece plantillas de gitignore curadas para distintos lenguajes de programación, y herramientas específicas para inicializar proyectos como uv init generan un .gitignore básico como parte del boilerplate.

Un .gitignore forma parte del proyecto (está commiteado) y es importante que esté en el repositorio para que todos los colaboradores tengan la misma configuración.

¿Pero qué pasa si queremos ignorar archivos solo localmente?

Leer más…

Un cheatsheet automático para tu CLI Typer

Typer es gran framework de CLIs del mismo autor que creó FastAPI. Permite crear interfaces de línea de comandos robustas e intuitivas basándose en anotaciones sobre los argumentos de funciones. Sin hacer mucho esfuerzo te ofrece autocompletado y ayuda en línea de comandos, que de paso se ve muy bonita al estar basada en rich.

También permite facilmente registrar grupos de comandos y subcomandos, lo que facilita la organización y mantenimiento de aplicaciones grandes. Pero, ¿qué pasa cuando tu aplicación crece, con múltiples subcomandos, grupos y opciones anidadas?

Para los usuarios (¡o incluso para vos mismo después de un tiempo!), puede ser un desafío recordar todos los comandos disponibles, sus funciones y cómo interactúan. La ayuda integrada y la documentación son clave, pero ¿no sería fantástico tener un "mapa" en vivo de tu aplicación, accesible directamente desde la terminal?

¡Acá es donde entra typer-cheatsheet-command!

Leer más…