Skip to content

Instantly share code, notes, and snippets.

View mgaitan's full-sized avatar
πŸ› οΈ
devex

MartΓ­n GaitΓ‘n mgaitan

πŸ› οΈ
devex
View GitHub Profile
@mgaitan
mgaitan / prompt.md
Created July 19, 2026 15:14
borges project: Prompt original

ConstruΓ­ un MVP de buscador para un corpus completo de y sobre Jorge Luis Borges, usando Python 3.14, FastAPI, SQLAlchemy 2 async, Alembic, PostgreSQL en Neon y despliegue en FastAPI Cloud.

Objetivo:

  • descargar libros de Borges
  • Importar libros EPUB de Borges y tambiΓ©n textos β€œsobre Borges”.
  • Preservar estructura editorial y bibliogrΓ‘fica.
  • Permitir bΓΊsqueda textual, semΓ‘ntica e hΓ­brida.
  • Mostrar fragmentos relevantes, ampliar contexto y abrir el texto completo.
  • Filtrar/facetar por autor, obra, libro/ediciΓ³n, aΓ±o, dΓ©cada, tipo de texto y naturaleza del documento.
  • Sugerir fragmentos y obras relacionadas.
@mgaitan
mgaitan / marshalling-refactor.md
Last active June 20, 2026 19:02
Fierro: marshalling, mutabilidad y cachΓ© β€” diagnΓ³stico y plan de refactor

Marshalling, mutabilidad y cachΓ© en Fierro: diagnΓ³stico y plan de refactor

Complementa Arquitectura. Referencias al cΓ³digo apuntan a develop en GitHub.


Parte 1 β€” El sistema de marshalling

1.1 Por quΓ© existe

@mgaitan
mgaitan / androidcam
Last active April 2, 2026 21:43
androidcam: use an Android phone as a Linux webcam via scrcpy + v4l2loopback
#!/usr/bin/env bash
# Android phone as webcam for Linux via scrcpy + v4l2loopback.
#
# Initial setup recap:
# 1. Install build/runtime dependencies if needed:
# sudo apt install ffmpeg libsdl2-2.0-0 adb wget \
# gcc git pkg-config meson ninja-build libsdl2-dev \
# libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
# libswresample-dev libusb-1.0-0 libusb-1.0-0-dev \

AGENTS.md

PropΓ³sito

Este proyecto existe para probar consultas sobre Datos Abiertos de Argentina usando CKAN MCP con el menor nivel posible de alucinaciΓ³n.

La prioridad es:

  1. responder sΓ³lo con evidencia trazable a datasets y recursos concretos;
  2. distinguir claramente entre hechos observados, cΓ³mputos derivados e inferencias;
  3. rechazar o limitar respuestas cuando el portal no alcance para sostenerlas.
@mgaitan
mgaitan / benchmark.py
Created December 7, 2025 17:02
tl-parser vs pyquery vs bs4 with html5 and lxml parsers
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "tl-parser==0.7.11",
# "beautifulsoup4",
# "lxml",
# "pyquery",
# "matplotlib",
# ]
#
$ llm \
  --schema '{
    "type": "object",
    "properties": {
      "customer": {
        "type": "string",
        "description": "Nombre del cliente"
      },
      "items": {
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@mgaitan
mgaitan / traductor_jeringozo.py
Created November 5, 2025 15:30
Este es un traductor jerigonzo en Python que hicimos con mi hija Ema, basado en su solucion del desafio de Pilas Bloques que ella implementΓ³
"""
Este es un traductor jerigonzo en Python que hicimos con mi hija Ema,
basado en su solucion del desafio de Pilas Bloques que ella implementΓ³
https://pilasbloques.program.ar/online/#/desafio/254
Ejemplo:
$ python traductor_jerigonzo.py papi te quiero mucho
papapipi tepe qupuipieperopo mupuchopo
@mgaitan
mgaitan / example.txt
Created October 31, 2025 20:42
zw example
# Nothing to see here β€‹β€Œβ€‹β€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€Œβ€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€‹β€‹β€Œβ€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€Œβ€Œβ€‹β€‹β€‹β€‹β€Œβ€‹β€Œβ€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€Œβ€Œβ€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€Œβ€Œβ€Œβ€‹β€Œβ€Œβ€‹β€‹β€Œβ€Œβ€Œβ€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€Œ
But, damn, it sure is a catchy rhythm.
β€‹β€Œβ€‹β€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€Œβ€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€‹β€‹β€Œβ€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€Œβ€Œβ€‹β€‹β€‹β€‹β€Œβ€‹β€Œβ€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€Œβ€Œβ€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€Œβ€‹β€Œβ€‹β€‹β€Œβ€‹β€‹β€‹β€‹β€‹β€‹β€Œβ€Œβ€‹β€‹β€‹β€Œβ€Œβ€‹β€Œβ€Œβ€‹β€‹β€‹β€‹β€Œβ€‹β€Œβ€Œβ€Œβ€‹β€Œβ€‹β€‹β€‹β€Œβ€Œβ€Œβ€‹β€‹β€Œβ€Œ