Felicitaciones! tremendo laburo. La nueva pagina de ruleta rusa se ve muy genial, practica y carga super rapida.
No entiendo de programacion y poco menos de AI, pero mas allá de la gran ayuda de la AI para la programacion de la pagina, es muy meritorio los conocimientos tuyos para indicar exactamente que es lo que quieres que haga
Programando con AI: llevando el prompt al extremo para que haga bien las cosas

Les cuento, la semana pasada estuve reprogramando todo el sistema de la Ruleta Rusa, la idea es que prácticamente ustedes ni se den cuenta de todo lo que hice, que sea "smooth" el cambio, y lo hice.
Pero para hacerlo estaba intentando con mi fabuloso systemprompt como base y algo andaba mal, yo me ayudo en Copilot en Visual Studio Code y no daba pie con bola, siempre se deliraba (Claude 4 Sonnet), así que estuve toda una semana experimentando con mi mega pedido y no pude lograr un sistema funcional.
Hasta que me cansé y le pedí a... Claude! justamente que me indicara cómo era mejor pedirle lo que yo necesitaba...
Le pasé mi mega-prompt que definía todas las funciones y funcionalidades diversas que necesitaba para el administrador de la ruleta.
Se que para la mayoría de ustedes no son más que links a imágenes, y eso es lo que se ve, pero por detrás hay toda una lógica y un laburo gigante que implica muchas cosas a tener en cuenta.
Primero lo más importante: Bajar y organizar imágenes.
Puede parecer trivial, pero hoy en día obtener contenido de otro sitio, clasificarlo y reproducirlo luego es un temita, además de la cantidad enorme de bytes que ocupan, la ruleta pesa alrededor de 12GB, y eso que apenas contempla una porción de lo que fue desde toda la vida, pero si tomamos desde 2013 que es cuando lo metí en un sistema, es bastante grande y muchos años de contenido.
Son más de 12.000 "balas" que están organizadas en "ruletas" que las contienen, pero los archivos estaban todos en una misma carpeta, había que organizarlas en carpetas /[año]/[mes]/ para que fuese manejable.
Por otra parte, muchas de las imágenes estaban en Imgur.com y no las tenía yo por el peso, todos los videos y gifes animados, a descargar de nuevo! Bueno, no todos, pero una gran cantidad no los tenía descargados.
Por otro lado me faltaban thumbnails de casi todo, tuve que regenerarlos. Todavía me queda por descargar todo el contenido animado de 2017 a 2013, el 2018 ya lo descargué y lo subiré en breve, el resto está todo online.
Como verán, esa boludez que son 20 imagenes por semana es mucho más que 20 boludeces, el sistema tiene que permitirle a ustedes navegar entre ellos, ver las fotos o los videos, que se ajuste a pantalla, que luego puedas ver más, que puedas volver al índice, que estén en orden, organizadas, que funcione.
Aquí les cuento cómo lo logré programando apenas un 10% de lo que hubiese necesitado si lo hacía solo.
El buen prompt
Primera regla: un modelo LLM de "Inteligencia Artificial" es como tener a los monitos del Señor Burns tipeando, podrán tarde o temprano escribir lo que necesitás, pero mejor si lo ordenás vos.
Así que me puse en modalidad "Project Manager" y bajé a texto lo que necesitaba, Claude me dijo que lo mejor era no sólo bajarlo a texto sino armar una serie de archivos de texto por fases para que la AI pudiera seguir las tareas sin dedicarse a otras que no quería. Ponerle un orden y un freno para que no delirara.
Primero un archivo inicial en /docs/main_instructions.md que sería la base que alimentaría al modelo:
Así como lo ven es bastante tonto todo, pero les aseguro que funciona! Luego de crear esta especie de índice seguí con las fases:
Esta era fácil porque sólo forzaba la creación de archivos y estructuras, la condición de no continuar con nada hasta que estuviese completada la fase fue clave.
Podía quedarme iterando en pequeñas correcciones de la Fase 1 hasta que yo le indicara que continuara con la Fase 2.
Esto es crucial porque Claude es un modelo que tiene a irse por las ramas solo y hacer lo que se le cante si no se le definen las restricciones correctamente.
Hacer de jefe de un Junior
Aun así en esta fase se mandó funciones como esta que les voy a mostrar, la invoca así:
// Verificar permisos de administrador
if (!verificar_permisos_admin()) {
header("Location: ../login.php");
exit;
}
Hasta aquí perfecto, va a validar que el usuario sea administrador antes de dejarlo pasar al dashboard, peeero... a la hora de implementar la función...
/**
* Verificar si el usuario tiene permisos de administrador
* (Función básica para Fase 1)
*/
function verificar_permisos_admin() {
// Por ahora retornamos true
// En fases posteriores se implementará la verificación real
return true;
}
El hijo de puta devuelve True siempre! Me reí mucho con esto porque hasta me lo esperaba, en la Fase 2 y las siguientes no aclaré que debía completar esto porque ni siquiera me di cuenta que lo había hecho.
Hay que supervisar TODO lo que hace, que lo documente, que lo aclare. Por suerte era fácil de resolver (yo ya le proveo un sistema seguro así que esa validación ya existía).
Fue clave, para acelerar el proceso, proveer de un framework propio de login, sesión y abstracción de base de datos, así no hace estupideces cuando crea todo eso (es DEMASIADO común).
Luego seguí iterando con fase2_instructions.md hasta la 10, inclusive le creé un pedido para que de todo esto armara una API completa por si algún día quiero integrar alguna app por fuera:
Ni siquiera es algo que necesitara, pero la creó de forma espectacular, con el admin para crear api keys y contabilizar consumos, etc.
Separando de a fases e indicándole tareas más cortas y sencillas pude lograr el resultado esperado en un día, luego las otras fases me permitieron llegar a un sistema usable en otros dos días y al cuarto le pedí que me armara la interfaz de usuario.
Esto incluyó importadores y scripts de batch para mover lo viejo a lo nuevo, la base de datos sigue siendo la anterior con mejoras, y lo importante: dejar de depender de sitios de terceros para alojar el contenido y consumirlo.
De esta forma cada vez que entren al nuevo ruleta.linksdv.com van a estar entrando a un sitio donde el contenido es 100% local y no hay riesgo de que desaparezca como me sucedió con gfycat hace un par de años.
Si están pensando en "Vibe Coding" olvídense, sin mi intervención en cada fase era imposible que Claude 4, uno de los mejores modelos para programar, lograra algo funcional de una, es una máquina de cometer errores aun cuando tenés todo documentado.
Me aceleró meses de trabajo en pocas horas libres a la noche, y eso es impagable, nunca me hubiese animado a esto, un sistema creado de cero, y hubiese seguido poniéndole parches de mierda a lo que tenía hecho con los codos, ahora tengo un sistema maravilloso que funciona de pelos.
Quedan bugs todavía, pero poco a poco los voy resolviendo, el sitio es simple para los usuarios, el 90% de lo que hice es para el "administrador", pero es justamente lo que más trabajo me daba cada semana para coleccionar imágenes y brindárselas como hace más de quince años. Pueden ingresar al nuevo sitio de la Ruleta Rusa aquí.
Otros posts que podrían llegar a gustarte...
Comentarios
-
-
Gracias!!!
Hasta se puede hacer swipe en móviles para ver la siguiente bala 😁
Creo que todavía las AI para programar requieren mucho de la asistencia del humano, todos esos instructivos que le tuven que armar son como programar con lenguaje natural, he aqui que la mayoría de la gente no sabe ni lo que quiere 😅 y por eso el "vibe coding" es un poco a una mentira, hay que tener muy claro cada detalle, aun sin saber programar, hay que saber organizar y dar instrucciones
-
¡Gracias por el trabajazo!
Aunque a partir de la ciento y mucho no encuentra las imágenes, pero me permite disfrutar de muchas ruletas que no conocía. :-)
-
SSSSSSSpetacular!
Y, viste, es como digo. Esto es como tener un destornillador eléctrico con embrague tope de gama! Te acelera mucho el laburo, pero tenés que saber que querés y diseñarlo/modelarlo previo a apurar el armado.
Gracias por el paso a paso. Muchos aquí no entenderán un pomo, pero unos cuantos seguro que sí. Y como todo, ver en la práctica como funcionan, no tiene precio. Es como el kaker, tenerlo voyando es darle forma a algo que sino, es abstracto para muchos.
Excelente laburo amigo, y gracias por compartirlo en detalle!
-
Espectacular! Nuevamente, yo venía haciendo algo así pero a mano, y claro... A veces se ponía con funciones Random que nunca le pedí...
Los amo a ambos!
Saludos, niñita...
-
Laburazo y gran inspiración a los que tocamos un poco del asunto y vemos en la IA la forma de acelerar cosas que antes se hacían en mucho mas tiempo, con mucha gente de por medio y demases.
Realmente clave la forma de darle el prompt y como decís, la clave está en saber bien lo que se quiere, porque la herramienta por sí sola no hace mas que "hermosos fails" cada 2 por 3 -
Igualmente, ahora que vi la web de la ruleta, es como que no la entiendo. Es decir, en la publicación de los jueves, yo veía las balas y jugaba a "tener suerte" y que no me toque MV mientras iba agotando las balas.
En el sitio, apenas entro, no está esa dinámica, sinó todo lleno de imágenes, videos, y MV así sin jugar a nada.
Es así o me estoy perdiendo algo @fabiomb ? -
la ruleta no deja de existir, el sitio de la ruleta es para alojar las imágenes, el tema es que, ya que estaba, hice todo un índice para poder ir a ver las imágenes viejas (lo hice hace más de diez años, claro), muy simple.
Fue para darle una cierta independencia, no hace falta entrar ahí, pero hay gente que vive dándole al siguiente-siguiente y quise darles eso, el contenido está , que cada uno lo disfrute como quiera, es un repo de balas perdidas 😁
-
Yo no sé si podría programar así, esto me recuerda a mi época de estudiante cuando algún profesor dijo algo así como "ustedes tienen que crear documentos de diseño, programar lo hace otro". Y por eso (y otras cosas) al final terminé dejando la carrera de Analista de Sistemas, porque ¡a mi me gusta programar!
-
Pensalo como una cosa intermedia, programás una parte que querés que sea el CORE de lo que estás haciendo, dejás todas las otras cosas que odiás definidas en el doc y hasta, si querés, con el constructor armado y/o hasta el nombre de la función y sus parámetros: que las rellene el LLM.
Así pude hacer todas esas cosas que odio hacer usando AI y quedarme con las que me gustan más para mí😁
-
Cómo ves el futuro de la IA como asistente/creador de software en unos años?
Porque esto mismo, que si bien es una ayuda está lejos de ser ideal como bien describiste, era impensado una década atrás.
-
A todo esto... @fabiomb, preguntonta... como debugger sirve? ponele que le das un código completo y le pedis que le encuentre errores y sugiera correcciones... eso lo probaste?
-
lo probé para encontrar vulnerabilidades y suele ser bastante crítico, me gustó, las obviedades que se te pasaron por alto las encuentra y te dice "la entrada no está sanitizada, o el método usado es vulnerable a XSS" y sugiere correcciones.
¿ Tiene razón? Mirá, ni idea, pero si entraba la variable X y ahora le puso un firewall de 20 contramedidas para que no te inyecten nada, me gusta 😁