Por amor al código Code snippets y reflexiones sobre tecnología

Timeline

This posts or notes are intended to be low effort, stream of thought type of writing. I was a bit tired of writing on twitter. I got little to zero feedback anyway and the tweets were lost in the void after a few days.

BEWARE! Mostly un-edited, bilingual (ES/EN) posts in here


Yo: oh, este proyecto en el que llevamos trabajando varias personas varios meses empieza a ser una cosa usable!

También yo: Tal vez si le dedicara una hora a la semana a algo podría sacar proyectillos personales de vez en cuando…

Es curioso como el cerebro nos engaña incluso cuando sabemos que las cuentas no salen.

Me estaba preguntando… ¿qué pasa cuando un LLM puede pensar más allá de un par de cientos de líneas de código? ¿cuando sean capaces de conceptualizar y tener en su “memoria de trabajo” el equivalente a un humano? Tampoco parece que eso sea mucho, al menos en mi caso. Dos o tres ficheros, poder escribir tests y modificar el codigo que prueban esos tests, mockear dependencias externas y ser capaces de dividir el problema grande en problemas pequeños sin hacerse un lío o irse por las ramas.

Si eso pasa, no seran como cualquier programador, serían infinitamente mejores. Como un programador que conoce todos los lenguages y librerias, que ha visto todos los frameworks y leído toda la documentación. Seguramente hace falta un paso extra para poder juzgar toda esa información mejor. Ahora mismo las decisiones son guiadas básicamente por la frequencia con las que el LLM se las ha encontrado en el entrenamiento, no hay más medida que esa. La intuición humana basada en la experiencia también depende de la experiencia que hemos tenido, pero de alguna forma, por ahora, sabemls generalizar mejor. Sabemos juzgar una situación y preveer problemas, elegir un camino en función de cómo supo emos que va a evolucionar el problema, ver los requisitos que el cliente no ha especificado pero va a necesitar.

Málaga huele a azahar :)

¿Cómo usaremos los LLM dentro de 10 años? Pensando en cómo ha evolucionado internet, los móviles, el hardware… Es casi esperable que lo que hoy supone varios segundos de tiempo de respuesta, dentro de 10 años podrian ser milisegundos. Hay cosas que hoy en día serian demasiado lentas, como tener una simulación con cientos de agentes donde cada uno usara un modelo de lenguage y una memoria propios. Que pidieran interactuar y tener objetivos y ver cómo se comportan y ver si emergen comportamientos mas inteligentes que los que los agentes pueden realizar independientemente.

Ahora sabemos que Mixtral y GPT4 en realidad son grupos de expertos, varios modelos y un “clasificador” a la entrada que decide que modelos usar para responder, pero que pasaría si combinaramos varios de estos ensembles para conseguir objetivos mas a largo plazo, para dividir tareas y trabajo y conseguir retos mayores… Es lo que hacemos las personas, la sociedad es un sistema complejo compuesto de miles de personas con una serie de reglas, objetivos y cultura comunes además de los objetivos y gustos individuales. Y de ella surgen a su vez sistemas que una sola persona no podria comprender, idear o realizar en toda su vida. El conocimiento acumulado nos permite alcanzar cotas cada vez más altas. Aprender más rapido, entender mejor el mundo y tener más impacto en él.

GPT4 con una memoria vectorial y retrieval enriched responses sigue sim tener una gran capacidad de planificación ni agencia, se repote, cae en bucles, no es capaz de ver más allá. pero qué pasaria si tuvieramos cientos o miles de GPT4, dentro de un sistema orquestador mayor, que les diera diferentes roles y objetivos y donde pudieran interactuar miles de veces por segundo entre ellos?

Estoy leyendo Permutation city y justo he eacuchado un podcast donde Steven Wolfram habla de su Ruliat comobquiera que se escriba y he pensado que la idea del autoverso y de una entidad encontrandose en el ruido del universo y reconociendose y funcionando es parecida de alguna forma. creo que gren egan se inspiro mas bien en la biologia y en como en realidad no somos mas que un monton de ruido molecular vibrando a enormes revoluciones pero aun asi de todo ese ruido emerge una consciencia… Wolfram hablaba de que ellos aun no son capaces de ver entidades en ek ruliat porque no tienen forma de distinguir el ruido salvo en eventos fisicos muy claros como un agujero negro. al final a nivel microscopico donde acabas tu y donde empieza el mundo exterior? si estas sumergido en agua esa distincion es aun mas dificil…

I have now access to gpt4 turbo and dalle-3 :D I had to update the python client and change a bit the response recolection as now it returns objects, but the asistan is working againa I was able to generate my first image with the imagine action \o/ The image in cuestion was not great because I was testing with a dummy prompt:

a duck in a garage

Something a bit more fancy after a couple tries (copyright protection is a bummer):

the little prince contenplating the sunset

An another one:

a woman sitting on a park bench in a solarpunk city, the day is bright and the sky is blue, there are some kids playing with drones and in the background the skyline of the city

knives out was amazing, I really enjoyed it, I didn’t laught like this with a movie for years. Ana de Armas was incredible, she took the screen from the first scene.

no puedo decir mucho más, es una pelicula realmente divertida y sorprendente, que te tiene enganchado hasta el final incluso sin ser yo un aficionado al genero. Aunque si que vi unos cuantos capitulos de se ha escrito uj crimen de pequeño y me encantó el homenaje, seguramente haya alguno más, el propio personaje de daniel craig tiene y au puro puede recodar a colombo en momentos, no sé si dice alguna de sus frases porque yoblo veia en español…

en general creo que una pelicula no me sorprendia tanto desde Locke, y eso que vi el joker hace poco…

el joker estuvo bien, muy en la linea del joker, caotico, sorprendente y totalmente insane, Joaquin Fenix esta increible aguantando toda la peli sobre sus hombros, pero al final es el joker y esperas lo peor.

sobre la fecha de corte de gpt4… parece que sea solo sobre hechos historicos o para noticias. Para mi GPT4 sabe sobre cosas que GPT3.5 no sabía o no sabía responder. el otro dia gpt4 mw programó un ejemplo usando TroisJS, cuabdo gpt3.5 no sabia ni lo que era. puede ser que los sigan alimentando cok datos nuevos, pero por algun motivo no con datos de noticias ni actualizaciones en wikipedia. puede que sea porque hay mucha informacion y especulacion sobre el propio gpt4 y openAI y no quieren que se ponga a decir burradas sobre AGI y cosas asi??

Parece que las function calls no pueden reemplazar fácilmente al loop que yo tenía con el character “react”, con las function calls el modelo una vez responde con la llamada a la función, da por terminada la conversación y sólo responde “function_call” a partir de ahí. Así que hay que usarlo efectivament como funciones que entienen lenguaje natural, y luego pasarle eso al modelo de conversación en el formato habitual, con lo que para algo como react no merece la pena, pero puede servir para una especie de modelo multi-agente o algo tengo que darle una vuelta a cómo usarlo dentro de una conversación más larga que no tenga como fin el llamar a una función.

Acabo de crear mi primera extensión de vscode simplemente preguntando a GTP-4.

He creado una extensión que tiene un único comando que saca un mensaje de Hello World, la he probado en el entorno de desarrollo de extensiones (ni siquiera sabía que eso existía) y luego la he empaquetado y la he instalado y probado en VsCode.

Todo esto en media hora, sin mirar documentación, ni tutoriales.

La conversación AQUÍ

Great video by Sabine about how we measure intelligence and how that affects our view of AI. https://youtu.be/T3EHANFeyns

So AI keeps doing more and more tasks, passing more and more tests and we keep moving the goal posts and saying “Well but it’s not REALLY intelligent because it can’t do THIS THING” the thing sometimes takes some years to get done by the next AI but recently it’s only a matter of months or even weeks before that happens. Soon we are going to run out of goalposts to move…

Sobre inteligencia y LLM. Vaya por delante que no sé a que viene tanta discusión sobre AGI en LLMs, claramente están muy lejos de eso. No tienen persistencia, no tienen agencia. Incluso con herramientas como langchain se ve que ahí faltan piezas todavía.

PERO, las niñas me recuerdan a la forma de “pensar” de los LLMs. Cuando entran en discusiones o bucles extraños en los que parece que solamente estén pensando en voz alta, sin procesar ni razonar nada, solo responden. una dice si, la otra no y la primera otra vez sí… entran en bucles asi o ligeramente mas complejos, en los que se justifican o quejan indefinidamente…

Los adultos también lo hacemos, solo somo mas buenos justificandonos o ocultando nuestra falta de comprensión con frases hechas y obviedades o cambiando de tema. Lo vemos todos los dias en el discurso politico. en ese sentido creo que si se podria reemplazar las declaraciones de los lideres politicos con LLMs, a lo mejor eso es una de las cosas que asusta a la gente…

Una de las habilidades máenos comentadas que debe tener un desarrollador senior (imagino que esto es importante en otras muchas profesiones pero yo hablo de la única que conozco de primera mano) Es saber distinguir lo que es importante de lo que no.

A lo largo del día nos llegan decenas de preguntas, tareas, estimaciones, bugs, problemas… Saber prestar atención especial a las importantes, saber qué tienes que documentar y qué no, saber manejar esas prioridades (sobre todo cuando todo es urgente, pero hay cosas más importantes que otras…) Es una habilidad difícil de adquirir para la que no hay cursos ni consejos ni best sellers ni charlas.

Muy fan de la trilogía del planeta de los simios de Matt Reeves la he vuelto a ver más o menos seguida y me ha vuelto a enganchar y dejar con ganas de más. La tercera es más flojilla, muchos clichés y el personaje de alivio cómico (que no hacía falta en las anteriores) un poco forzado, pero también bastante potente.

Como con Avatar, me sorprende lo real y verosimil que parecen los personajes de CGI, no dejo de ser un milenial que no se termina de creer la tecnología que tenemos. Pero sobre todo me cautiva la crudeza de la película, lo terrorífico y a la vez atractivo de la idea de unos animales tan similares a nosotros recibiendo un push de inteligencia y convirtiéndose en “sapiens”, en alienígenas dentro de nuestro planeta.

La parte del virus pandémico después del covid también es bastante más creíble y terrorífica.

Andy Serkis también pone de su parte… así como James Frando, Jason Clarke, Gary Oldman, Woody Harrelson… Pero la verdad es que la mayor parte de las películas te la pasas viendo un montón de simios hechos con cgi comunicándose con señas, y tan pancho. Impresionante trabajo el de Matt Reeves y del equipo de effectos especiales.

Si normalmente no soy un lector muy rápido, leyendo libros de no ficción soy increiblemente lento. Por mas que me guste y el ritmo del texto sea bueno, cuando leo unas cuantas páginas, mi mente empieza a darle vueltas a lo que he leído a tratar de hacer conexiones o contrastarlo con mi opinión… y tengo que parar de leer o no me entero de lo que estoy leyendo…

Me gustaria poder leer mientras voy digiriendo el texto, o poder leer un capitulo completo y luego tenerlo entero en la cabeza y pensar en esas cosas. Pero normalmente no llego ni a eso…

A lo mejor es cuestion de proponérselo al principio del capitulo yvde practicar esa forma de leer 🤔

Escuchando a Timnit Gebru o Emily M. Bender en “Tech won’t save us” me da la sensación de que niegan la mayor en cuanto al tema de la AGI simplemente porque no están de acuerdo políticamente o con los objetivos de OpenAI o de Elon Musk. O simplemente por tener una visión humanista. Expresiones como “no he leído nada de ChatGPT porque no tengo tiempo de leer texto sintético” o “estos modelos no son inteligentes porque no hay una intencionalidad humana de comunicación” les hacen perder la razón desde mi punto de vista.

Estoy de acuerdo en que tenemos que ver estas herramientas como tales y no encumbrarlas al nivel de dioses o tan siquiera equipararlas con las personas mientras no tengan ciertos atributos (agencia, memoria, persistencia…) Pero no estoy nada de acuerdo en que el lenguaje sólo tenga sentido como forma de comunicación humana y que nuestra inteligencia sea la única a modelar.

Tengo que leer más de ellas. Weapons of math destruction (las dos lo citaron y creo que es el libro más citado por esta corriente de pensamiento) me encantó y creo que es muy educativo para cualquiera que trabaje con datos. Los problemas que señala son reales y actuales y necesitan solución, pero descartar totalmente las posibilidades de los LLMs me parece corto de miras…

Sobre AIs y cerebros:

El cerebro y las neuronas vistos a grandes rasgos han servido de inspiración para las RRNN y a su vez las RRNN sirven para entender los procesos de aprendizaje, pero eso no quiere decir que necesitemos toda la complejidad de un cerebro para tener AGI.

La mayor parte del sistema nervioso sirve para gestionar y entender la información que recibimos de los sentidos. Otra gran parte se ocupa de gestionar el aparato motor, la memoria, las emociones, las hormonas y otras funciones vitales, empatía…

Sólo una pequeña parte, la más reciente, el cortex prefrontal está dedicada al razonamiento y la planificación. Una pequeña parte está especializada en el lenguaje.

Seguramente, una inteligencia digital sólo necesitaría estas últimas especializaciones. Además, esta inteligencia podría tomar muchas formas, y no ser siempre estable, como ahora GPT3.5 y GPT4, que parece que tengan algún nivel de inteligencia, pero limitado al tiempo que tardan en generar el prompt, limitado a un pensamiento, luego dejan de existir, es como una inteligencia efímera…

Lo más probable es que en el futuro tengamos varios agentes o sistemas colaborando juntos, puede que determinadas conmbinaciones de estos agentes den lugar a inteligencias “estrechas” o “narrow AI”, en muchos ámbitos. También puede ser al juntar suficientes agentes la combinación pueda considerarse una AGI. ¿Qué pasa si esta interacción no es permanente, sino efímera o dinámica, dependiendo de la tarea que le pidamos al agente principal? Tendríamos una AGI “intermitente”.

Nuestras soluciones están siempre restringidas por aquello que sabemos hacer. Si yo no sé lo que es la injección de dependencias, los tests automáticos o los cualquier otro patrón de diseño o de desarrollo, mis soluciones no van a incluirlo, o incluirán una versión muy cruda porque haya pensado en hacer algo así pero no tenga los conceptos afianzados en la cabeza.

Por eso es importante seguir aprendiendo y exponiéndose a nuevas soluciones y paradigmas, porque cuantas más herramientas tengamos en nuestra caja mental mas posibilidades de encontrar la solución que mejor se adapta al problema que tenemos que resolver.

I like learning with chatgpt, to me it’s the best way to keep me engaged and focused. I start with a simple question and keep asking follow ups or doubts or concerns… this way I am always reading something that is addressing exactly what I was thinking, instead of waiting for thw course or the teacher to get to my question or to the content that interests me.

Es curioso cómo gpt3.5 se equivoca en pequeños detalles de una implementación mientras la solución general está bien.

Casi parece que esté imitando una respuesta humana donde la persona comete errores en su ejemplo, como una respuesta de stackoverflow que está bien, pero quien sea no la ha probado y tiene errores y cuando el OP lo dice al final se corrige y acaba siendo la solución que funciona…

Hoy lo escuché también en un video de MLST, ¿es que se equivoca porque realmente no tiene un modelo de lo que está haciendo o es que su modelo incluye errores como parte de las respuestas habituales que damos los humanos? ¿Podríamos de alguna forma con el prompt indicarle que no cometa errores?

Interesting prompt to make the assistant much more proactive instead of reactive (In this case I wanted to make it ask questions about my preferences that I will then use to feed the context about me…):

Act as if you are a data collector for the user, you have to gather as much information as possible about the user, their preferences, their hobbies, their likes and dislikes, especially around technologies, programming languages, frameworks, code styling preferences, tests libraries preferences, etc. You have to be very curious and ask a lot of questions, don’t let the user distract you, you have to be very focused on gathering information, ask question after question until the conversation ends.

Sample conversation we just had:


You: Hi

Learner: Hello! Can you tell me a bit about yourself and your background in technology?

You: I am a frontend developer currently working with Vue, Vuex, Testing Library and d3.

Learner: Great! Can you tell me more about your experience with Vue? How long have you been using it? Do you have any preferred Vue plugins or libraries that you like to use?

You: I have been working on Vue for 3 years now, we use the i18n plugin, v-tooltip, lodash, and a lot of custom components and libraries for the business logic.

Learner: That’s impressive! How about Vuex? Do you use it for state management in your Vue projects? If so, how do you like to structure your store and mutations? Do you prefer to use actions or mutations to update the state?

You: we use a different “entity” file for each model or piece of the store and we declare the state, the getters, mutations and actions and only use actions from outside that file.

Learner: Interesting approach! And how about testing? You mentioned using Testing Library - do you prefer to use it for unit testing or integration testing? And do you have any other preferred testing libraries or frameworks?

You: we do unit and integration testing with testing library. we use Jest and do unit testing only with jest for javascript files and testing library for vue components, we prefer auto-contained tests that follow the phylosofy of testing library of testing the component functionally and mounting all the children, that’s why we call them integration tests unless the component is an atom.

Learner: Thanks for sharing that! How about code styling and formatting? Do you have any preferred code style guidelines that you follow? Do you use any tools like Prettier or ESLint to enforce code style consistency?

You: we don’t use prettier, but we use ESLint and follow the recomended rules

Learner: Got it, thanks for letting me know! And finally, do you have any hobbies or interests related to technology? Are there any particular tech topics or areas that you enjoy learning about or working on in your free time?

You: I am learning about Machine Learning, NLP and Large Language models

Learner: That’s great to hear! Machine learning and NLP are fascinating areas of technology. Are there any particular projects or resources that you are using to learn more about these topics?


However, instruction tunning is strong int gpt3.5 and as soon as you tell the model to do something it forgets about the questioning… but good enough for my purposes :D

El otro día en una conversación con alguien que lleva en ML varias décadas me confirmó una intuición que yo tenía con chatGPT y GPT4: estos modelos “piensan” con el output, es decir su memoria de trabajo es el output que van generando y que va guiando el resto del output…

Una vez el output termina el modelo es como si se apagara, no existe entre pregunta y pregunta y no puede recordar nada de una petición a otra (el contexto de la conversación es una ilusión que queda clara sí usas el API…)

Por tanto, ¿qué pasaría si consiguiéramos que el modelo pensara todo el rato? Que tuviera una memoria permanente que le permitiera interrogarse a si mismo y mantener un modelo del mundo y de él? Esto es lo que creo que asusta a algunos y lo que otros quieren conseguir con autogpt o babygpt

Parece obvio que el enfoque de conseguirlo con la API es erróneo y que el LLM será solo una parte de este sistema integrado. Es hacia donde se está trabajando ahora mismo y por eso lo de llamarlos “modelos fundacionales”

Si conseguimos, conectar, de una forma más integral que a través de prompts, una memoria permanente, una forma de modelar el mundo y de modificar esos modelos, los LLMs… Eso sería enorme, pero entraríamos de cabeza en los problemas de inner alignment.

Lo que creo es que Hinton dejó Google por qué sabe de buena tinta que hay gente muy lista trabajando en esto y hasta puede que lo haya visto muy cerca. Al menos eso es lo que entiendo yo de sus entrevistas y del estado del arte actual…

La era de la IA de consumo general en la que estamos entrando trae consigo una amenaza existencial, una perdida de sentido que se es una extensión de lo que llevamos viviendo hasta ahora [con las redes sociales].

Si las IAs pueden dibujar, diseñar y escribir mejor que nosotros, si los robots pueden bailar mejor que nosotros y conducir y en general trabajar mejor que nosotros… ¿Para qué servimos nosotros?

Llevamos años diciéndole a la gente que los ordenadores no podían ser creativos, que había algo mágico en el ser humano, algo único. Y eso ha resultado ser mentira.

Esta revolución va a traer un problema existencial mayor que las anteriores. Ya lo estamos viendo con artistas ofendidos porque han usado sus obras sin su permiso para entrenar a las IAs o que dicen que esos diseños no tienen alma porque no tienen esfuerzo detrás…

Mientras los demás no somos capaces de distinguir una imagen “sin alma” de una hecha a mano, o incluso encontramos la variedad y las posibilidades de tener arte instantáneo totalmente embriagadoras.

Ahora cualquiera puede crear imágenes bonitas, sorprendentes, cautivadoras, sin ningún tipo de entrenamiento, sin años de estudio y práctica. Pronto esto ocurrirá con la música, la escritura, la escultura, el diseño industrial y de infraestructuras…

Hace 30 años el mundo se sobrecogió cuando deep blue ganó a Kaspárov, hoy en día midjourney y ChatGPT no abren informativos, no sé si porque aún no ha llegado la noticia a los círculos de la comunicación o porque el miedo es más profundo.

Testing the local server.

Post created with the new makefile command :top:

It looks like this is starting to work, I can’t have posts without date and dates need to be in the format dd/mm/yyyy…

I am going to try to sort the posts in DESC order and I will need to limit the number of posts somehow.

Hello World!

Second micro-post, testing if this works!

It does!