Want to join in? Respond to our weekly writing prompts, open to everyone.
Want to join in? Respond to our weekly writing prompts, open to everyone.
Whether you think you can, or you think you can’t – you’re right.
—Henry Ford
from
💚
Espoo
Grand respect for the now that you are As I become the one to just be Glitter in redemption And the actions of day In heart, esteem of the functional grace There was one body, And a time for respect Nearing the soul of the good and the golden All waits for this certain good In the time of our outcome, Is the life of all And we are Innsbruck to Gothenburg And exchanging all people A place for clearing hearts Which command our resolve And new hearts and new comings Out of respect for the quo With lands alight to the next kind of level Our history by the tome Wishing our river clean And the tempest dry when Heaven speaks All exceptions to some rules, We run some and others To every lake held in hand And we will see us there In time for you As one of us
from
💚
Waiting til Dawn
Was the vast and clear visit On timely seas and format Excessive to the year- along ago Fulsome and exalted Exactly square And furlough future typeset Rodham painted Rome For what could be seen as time Benched at prizing early There were dogs and people marching Standing tall between communiquée It was in the bright roots of Dover The document was done and our country We cried it out and mixed- Day and night were one For Princes and prayer invoke Hazmat here on time This was the Earth And a second account of the apartment It was exactly in the news The clan was- ..no more motivated; a witch Copper descent to skilling beams In one country, and willing wait All ten warriors watching Fordham whale Sixty dues and nine minutes Free to come but not go Landed in Massachusetts Across a trail New and lopsided It bore booze and hospital thinking Held up by bullets It was twenty and new A prayer for all who knew nothing In Hegsborth was design For lapses like this Clothes on and barely skittish Renewful and reasserted It was the cost of vital wins Against insurance and Rome At difficult best One momentum Superfluous but regal And the chances it would happen Were done We the People Were still the people And Québec was polywitness America, Screaming at the match, Was midnight and tireless And put into the back of a van For more dismemory to remember When to speak and now Chances high Freedom low Til Oprah wins The hurried words Of Lakeshore-1
from Tuesdays in Autumn
On Wednesday the postman brought a second-hand CD copy of Know What I Mean?, a 2011 re-issue of the 1961 album by Cannonball Adderley (featuring Bill Evans). It's not the first time I've owned this recording. Previously there’d been a '90s copy (also on CD) on which the music sounded just as good, but where there were extra bonus tracks interpolated with the original running order. For example, track 3 was 'Who Cares? (Take 5)' — i.e. the version that ended up on the original release — and track 4 was 'Who Cares? (Take 4)'. This I found irksome, as almost never has it occurred to me, having listened to a piece of music, that I want to hear a slightly different variant of it immediately afterwards. I concede that bonus tracks of this kind can be interesting & worthwhile, but only as footnotes, so to speak, at the end of the running-order, not in the midst of it. Fortunately for me, sanity prevailed in the 2011 version I now have.
Another jazz album recorded in 1961 came my way on Saturday, spotted on a charity shop shelf priced at £1.99: Free Form by Donald Byrd et al., notable as the first time Wayne Shorter and Herbie Hancock recorded together. This one I hadn't heard before. On first listen it struck me as mostly straight-ahead hard bop with some more adventurous flourishes — notably in the title track. I have it in a CD re-issue from 2004, a time when illegal file-sharing was rife, hence the packaging alerting the buyer to the disk being copy-protected, and stating that it's compatible with “MS Windows 95, Pentium 2 233 MHz, 64MB+ RAM“. My provisional favourite track: ‘Pentacostal Feelin’”,
After a sudden & much belated realisation earlier this year that I do actually enjoy blue cheese, I have been exploring this new flavour terrain with enthusiasm. The latest example to come my way was Môn Las from the opposite corner of Wales up in Anglesey. Unluckily, I think the piece I bought must have been encased in plastic wrap a little too long as it was discernibly ammoniated. It wasn't inedibly far gone, but I don't feel I've enjoyed a true sense of its virtues.
I'm back at work after a week off, which isn't a joy.
As a middle-aged man living alone in a shabby-looking house, this is a port of call which evidently isn't the kind of scary that appeals to the local trick-or-treaters. Some years I'll get an intrepid caller or two; but this year there were no claimants at all for the chocolates I'd bought. Hence I took a full tub of 'Celebrations' into the office today to share with my colleagues.
from Faucet Repair
22 October 2025
From Guston's studio notes in I Paint What I Want To See (2022): “The only true impulse is realism” (page 252). Felt applicable to my current headspace when I re-read it today, especially in conjunction with starting my morning by watching Phoebe Helander's recent talk at the New York Studio School, which was oriented around the act of deep looking within constantly changing surroundings, lack of attachment to outcome, and how cultivating sustained attention in one's practice leads to a fuller/less degraded life. It's significant how these concepts have continued to reappear in what I've been reading and watching the past few weeks, and how a realist impulse seems to clear the way for engagement with them all. But I think what Helander helped to elucidate is how it might be more useful to think of this approach not as something rooted in realism, but rather in observation-based absorption. No subject is better or worse than any other in this context.
from Faucet Repair
20 October 2025
Image inventory: Yena's small mirror spanning the corner of her room with a lump of laundry on top of it, a fallen green and silver metal tree sculpture in some shrubs beyond the wall lining the perimeter of Denmark Hill Station, a corner of my studio building near the bathroom (bricks painted over with white, paint severely chipped and faded), orange tomato soup with drip designs in single cream, morning light fragmented onto white walls upon entering through the three arch windows in Yena's living room, an advertisement that simply reads “MORE” in large orange capital letters, reflected light on wet cobblestone outside my studio during hard rain, Baryshnikov during his HeartBeat:mb, Yena's Monstera leaning toward one of the the aforementioned arch windows in her living room, glinting reflections of a glass cup and a glass bottle on a white wall warped by moulding, a sock Yena's mother left at her flat, a white dental mold on the street, a shadow cast by a car in a residential parking lot in the shape of a spade, Sankaty Head Lighthouse, London clouds confronting London trees, a shadow in the shape of a cross on a sidewalk.
from
Kroeber
Dentro de horas, Zohran Mamdani deverá tornar-se Mayor de Nova Iorque. E aqui onde escrevo estou tão atrasado em relação ao quotidiano que a data é de Julho. Mas o impulso de referir a actualidade fere-me.
from
💚
To Eat Almond
The size of a dream A fortune of days My solitude among water Accepting this bliss, Accolades of time To sift through becomingness To a soldier, In small time Here are almonds, And you are the afternoon, that answered my call
from
wystswolf

My emerging savior complex rears it's heroic head.
Sleep came heavy and fast, if not early, last night. I was trying, pushing to get more done than I could. And finally, I collapsed. Dreams were plentiful, but difficult to grasp. I only recall it being a busy night on the highway of my subconscious save for a gentle thread just before waking.
I was a stone cast into the sea and born on currents and jellyfish tentacles. Moving to and fro, fast and deep without resistance.
As I sunk deeper int darkness, I heard singing. Not whales or dolphins—there was human longing I could hear. Divers came wearing big brass helmets with anvils tied around their feet and they lowered me. As the pressure grew, the songs became clearer.
Somewhere in that darkness I grew a mouth— I was singing.
A low, winding song—half karaoke, half prayer—echoing through a cavern so vast the sound seemed to return from centuries away. The walls sparkled with jewels.
Dozens of voices joined mine, indistinct and shimmering, a chorus of ghosts or selves. Every note changed the color of the air—amber, then blue, then green— the song was pulling light through the spaced between molecules.
In my hands I held a long bolt, glowing like moonlight forged into dull chrome.Its threads were strange, intricate, hand-cut. Not something you could buy—something you would have to know how to make.
It was meant to fasten two enormous pieces of the world together. I remember turning it slowly, looking to start the ramp of the helical edge. Pressure and tilt carefully, until it caught.
Each twist felt like a heartbeat.
And above it all, the moon—bright and watchful, massive and filling the whole ceiling of the cave, which now became the night sky; a universe of stars. Her silver face clear and steady while everything else shimmered. A witness to the song.
When I woke, the melody was gone, but the feeling lingered—
that I had been part of some great joining, threading myself back into the machinery of sound and soul. The body was heavy with sleep, but the heart was humming, still echoing that room, still tuned to its luminous key.
Waken me can only assume the bolt and the song did their work as the world is still here and stable. My longing and joining having done the work of saving us all.

Companion to The Machine That Dreamed Me Awake →
#WolfInWool #dreams #writing #luna #song #MachineAndMuse #reflection #essay #travel #WYST #penandink #sxs #100daystooffset #writing
from
dimiro1's notes
This is part 2 of a series on building a fully functional terminal agent from scratch.
You can find the part 1 of this series in the following page: https://dimiro1.dev/building-an-agent-from-scratch
In this second part, we'll implement the conversation loop so we can have real back-and-forth conversations with the LLM. The agent will remember our past messages from the same conversation, making interactions feel natural and contextual.
Let's get started.
The first thing we need to do is update the main function to maintain a conversation loop. When I say conversation loop, I mean:
All conversational agents follow this loop. Some include complex cases like sub-conversations, but the basic pattern remains the same.
Let's modify the main file to implement the most basic loop. We'll expand from there.
(ns termagent.core
(:require [termagent.openai :as openai]))
(defn -main []
(loop [history []] ; (1)
(let [input (read-line)] ; (2)
(case input
"exit" history ; (3)
nil? history
(do ; (4)
(println (str "input " input))
(println (str "history " history))
(recur (conj history input))))))) ; (5)
Let's go step by step through the changes we've made:
loop function: https://clojuredocs.org/clojure.core/loopinputexit or uses Control-C or Control-Dcase function. If nothing matches above, this code runs. We wrap it in a do function because we need to run multiple instructions. Currently, we're just printing the user message and all known messages so far, then restarting the loop using recur with the new set of messagesLet's run the program to test the implementation:
$ clj -M:run
Hello
input Hello
history []
this is my input
input this is my input
history ["Hello"]
this is another input
input this is another input
history ["Hello" "this is my input"]
exit
As you can see, we're able to collect user input, maintain a conversation history, and print that history to the terminal. Progress!
That's basically all we need to implement the loop. We're still missing the AI integration, but we'll work on that now.
Now let's integrate the conversation with the LLM. We need to make a few changes to the code. First, we'll create a new function called get-reply in the openai namespace:
(defn get-reply [response]
(->> (get response :output) ; (1)
(filter #(= (get % :role) "assistant")) ; (2)
first
:content ; (3)
first
:text)) ; (4)
We'll use this function to extract only the text reply from the OpenAI response:
:output from the response. You can always refer to the official documentation for response examples: https://platform.openai.com/docs/api-reference/responses/create?api-mode=responses:content map from the response:text part of the responseNow let's make the necessary changes to the -main function:
(defn -main []
(loop [history []]
(let [input (read-line)]
(case input
"exit" (println "Bye")
nil? (println "Bye")
(do
(let [baseurl "https://api.openai.com/v1"
api-key (System/getenv "OPENAI_API_KEY")
model "gpt-4o-mini"
response (openai/generate baseurl api-key model input) ; (1)
ai-reply (openai/get-reply response) ; (2)
history (conj history input ai-reply)] ; (3)
(println ai-reply) ; (4)
(recur history)))))))
It's not too different from what we had before. Hopefully the implementation is straightforward. We're declaring some variables to hold values and then calling the AI:
Let's try this implementation:
$ clj -M:run
Hello
Hello! How can I assist you today?
My name is Claudemiro
Nice to meet you, Claudemiro! How can I assist you today?
What is my name?
I don't know your name. If you'd like to share it, feel free!
exit
Bye
Something is wrong. How come the model doesn't know my name? I just told it. The reason is that AI models don't keep any state—they can't hold a conversation on their own. That's why we're maintaining a history of messages (though we're not using it yet). For each call to the LLM, we need to pass the entire conversation history.
The official documentation explains that we need to pass the input as an array of key-value pairs, each containing a role and a content key: https://platform.openai.com/docs/guides/conversation-state#manually-manage-conversation-state
[
{:role "user" :content "knock knock."}
{:role "assistant" :content "Who's there?"}
{:role "user" :content "Orange."}
]
Great! This means we don't need to make many big changes to our implementation:
(defn -main []
(loop [history []]
(let [input (read-line)]
(case input
"exit" (println "Bye")
nil? (println "Bye")
(do
(let [baseurl "https://api.openai.com/v1"
api-key (System/getenv "OPENAI_API_KEY")
model "gpt-4o-mini"
history (conj history {:role "user" :content input}) ; (1)
response (openai/generate baseurl api-key model history) ; (2)
ai-reply (openai/get-reply response)]
(println ai-reply)
(recur (conj history {:role "assistant" :content ai-reply})))))))) ; (3)
The changes are:
That's essentially all we need to implement. Let's try it out:
$ clj -M:run
Hello
Hello! How can I assist you today?
My name is Claudemiro
Nice to meet you, Claudemiro! How can I help you today?
What is my name?
Your name is Claudemiro.
Nice, thanks
You're welcome! If you have any other questions or need assistance, feel free to ask.
exit
Bye
Perfect! Now the LLM can refer to previous messages.
Before we finish this chapter, let's improve the UI a bit. Currently, it's hard to distinguish user messages from assistant messages.
As always, we'll start simple and improve later:
(defn read-user-input [] ; (1)
(print "User: ")
(flush)
(read-line))
(defn -main []
(loop [history []]
(let [input (read-user-input)] ; (2)
(case input
"exit" (println "Bye")
nil? (println "Bye")
(do
(let [baseurl "https://api.openai.com/v1"
api-key (System/getenv "OPENAI_API_KEY")
model "gpt-4o-mini"
history (conj history {:role "user" :content input})
response (openai/generate baseurl api-key model history)
ai-reply (openai/get-reply response)]
(println "Assistant:" ai-reply) ; (3)
(recur (conj history {:role "assistant" :content ai-reply}))))))))
Here's what changed:
User: label, then reads the user input. The flush is needed—otherwise the message won't print right away. By default, output is buffered, but we want it to display immediatelyAssistant: labelLet's run this to see what we have:
$ clj -M:run
User: Hello
Assistant: Hello! How can I assist you today?
User: Who created Clojure?
Assistant: Clojure was created by Rich Hickey. He first released it in 2007, and it is a functional programming language that runs on the Java Virtual Machine (JVM). It emphasizes immutability and functional programming principles. Would you like to know more about Clojure or its features?
User: exit
Bye
Much better! We now have a fully functional yet simple assistant that can hold a conversation.
You now have a conversational agent that can: – Maintain a conversation loop with proper user input handling – Keep conversation history across multiple turns – Send the full context to the LLM with each request – Display clear distinctions between user and assistant messages
In the next chapters, we'll clean up the implementation by creating some helper functions. The biggest topics will be markdown rendering and syntax highlighting in code blocks.
Hope to see you there.
A Mending es un juego de rol en solitario (aunque hay instrucciones para jugar con amigues) creado por Shing Yin Khor. Lo que llamó mi atención y me hizo lanzarme a comprar el juego es que la mecánica principal es... ¡el bordado!
Pero vamos paso a paso.
El juego gira entorno al reencuentro de dos amigues, tu personaje principal y une amigue del pasado. A través de una serie de cartas, la autora nos invita a pensar en el tipo de relación que tenemos con nuestro amigue, además de encontrarnos con sorpresas por el camino.

Creo que las cartas son lo suficientemente abiertas para dejarnos espacio a la imaginación, pero lo suficientemente específicas como para que pensemos en momentos concretos con nuestre amigue. Quizás echo de menos más tipos de cartas que me hagan interactuar con el mapa, porque hay algunas (por ejemplo encontrarse con potenciales mascotas, mercaderes u objetos de divinación) pero creo que hay muchísimo juego por explorar en el mapa que no está siendo explorado.
Antes de continuar me gustaría hablar de la presentación. El juego viene en una bolsa de tela preciosa con una miniatura del mapa. Dentro de la bolsa encontramos:
El librillo es muy completo, te explica cómo jugar, sepas o no coser, y te sugiere como cuidarte de tí misme mientras juegas. Me ha parecido un juego muy “cozy” en ese sentido.

En mi caso he empezado el juego en uno de los mapas de papel, y he tomado notas en los márgenes. Para empezar, el juego te pide que elijas una esquina donde localizar tu casa y buscar un hueco en la esquina contraria donde colocar la casa de tu amigue. Una vez hecho esto, todo lo que hay que hacer es ir marcando el camino que elegirías y, cada vez que se cruza una línea del mapa, sacar una carta e interactuar con ella. Durante el juego habra recuerdos con tu amigue o eventos de interacción con el mapa. La autora te sugiere coser de un modo narrativo, usando bordados especiales o cuentas para marcar cosas importantes. Al inicio de mi aventura, por ejemplo, me encuentro con un perrito que tengo la opción de adoptar. A partir de ese momento, debo bordar también su camino.
Mientras usaba el mapa de papel, he dejado en remojo el mapa de tela, ya que es más fácil bordar y coser cuando ese tipo de tela está lavada. En el librillo menciona algo similar, lo que me parece muy interesante ya que, aunque yo lo sabía porque coso mucho, es algo que puedes no saber.
He de decir que al comenzar me sentía un poco perdida, no sabía bien cómo construir la relación con mi amigue. Decidí lanzarme a jugar sin tenerlo muy claro, y me gusta cómo las cartas te ayudan a construir esa relación poco a poco. Creo que el juego tiene un ritmo muy amable, que te permite construir una historia todo lo larga o lo corta que quieras. Es más, te permite incluso cortar la relación con tu amigue y dejar de ir a buscarle, pero (en un tono dramático) tienes que cortar el mapa. Si cambias de opinión, tienes quw coser el mapa de vuelta y continuar. Me parece que ese gesto es significativo y dice mucho de la historia a través de la mecánica, me encanta. En mi caso, mi historia no tuvo drama, yo no quise que la tuviera, pero quiero destacar esa posibilidad.
Quise empezar cerca de la playa y buscar a mi amigue más allá de las montañas. Quería darle un significado relevante a la naturaleza en mi historia, y me centré en pasar a lo largo de todos los espacios que me resultaban interesantes, no hacer una línea recta. Los recursos de la historia se prestan a hacer un camino tranquilo. Anotaba ideas y el tipo de bordado que quería hacer, así como detalles de la historia, en el mapa de papel, mientras dejaba secar el de tela.
Aunque no indica nada al respecto, quiero utilizar los colores y forma de bordado también para cómo se siente mi peronaje, siendo un bordado más complejo o liado cuando se siente con el corazón enredado, mientras que usaré una línea simple cuando el camino y la cabeza estén despejados. Me gusta la idea de marcar el camino de mi perrito, también, de una forma resuelta y libre. El librito de la autora menciona que no es necesario que la costura sea difícil, especialmente si no tienes experiencia, pero yo tengo experiencia y quiero aprovechar al máximo esta mecánica.
Me parece un recurso fantástico, ya que bordar en sí lleva paciencia, y ayuda a marcar un ritmo interesante. Lo pensaba por ejemplo con la idea de que, si adoptaba al perrito, tenía que bordar sus pasos. Eso es un trabajo extra, pero desde luego también lo sería cuidar de un perrito, es decir tiene sentido. Admito que es una mecánica que me ha entusiasmado tanto que pretendo usarla, yo también, para futuros proyectos.
Es un juego muy abierto, y si no tienes experiencia previa en juegos de rol en solitario o en escritura de diarios (reales o ficticios), puede ser un poco confuso comenzar. Sin embargo no es un mal juego per se para gente que se esté iniciando, tampoco, ya que el librito viene con todo lo necesario para comprender el juego desde cero. Además, insiste que no necesitas experiencia en costura, que creo que puede ser la barrera más grande para dudar sobre el juego, y es verdad. La propia autora menciona que no es una gran bordadora, precisamente. Evidentemente, si sabes bordar y tienes experiencia, puedes aventurarte a expresar un poco más de la historia y el personaje haciendo uso de este recurso, pero no es fundamental.
Recomiendo darle una oportunidad, especialmente si andas tras juegos tranquilos y “cozy” que poder hacer sentada en el sofá cerca de una mesa (o al menos así he jugado yo). Sin embargo, si estás uscando aventuras trepidantes y batallas épicas, no te molestes. Un detalle, el juego está en inglés, así que si no te manejas mucho y quieres jugar necesitarás un diccionario y algo más de paciencia.
En su tienda, la autora tiene otros juegos, oráculos*, tarot y objetos jugables en rol.
*) En rol en solitario, el oráculo es una mecánica que provee inspiración con respuestas a preguntas, normalmente respuestas llenas de subjetividad y un poco de misticismo.
from zen notes
Crisp mornings
Golden leaves and promise
After summer, look to October
Always grateful to those
Already along the way
For everyone in thought
We can continue
To improve autumn
#blackoutpoetry #aboutavillage
from Dzudzuana/Satsurblia/Iranic Pride
Meine Eltern schlagen mich, die Welt applaudiert
Meine Eltern schlagen mich,
die Welt applaudiert.
Der Mann vom Balkan
arbeitet weiter an der Fassade,
ganz unbehelligt,
die Erde dreht sich weiter wie bisher.
Die deutschen Frauen
schieben ihre Kinderwagen vor sich her
und küssen sich auf offener Straße.
Sie lächeln,
als wäre die Welt gerecht,
als hätte niemand je geschrien.
Nur die Kurdin leidet,
während die Deutschen
ihren Feierabend planen,
und die Männer vom Balkan
in den Zigarettenpausen
über den nächsten Auftrag reden.
Niemand fragt,
warum sie schweigt,
warum ihre Augen
nicht mehr glänzen.
Denn das Leid der Kurdin
ist kein Thema für die Welt,
es ist bloß Hintergrundrauschen
zwischen Werbung und Wetterbericht.
Und während sie weiter leidet,
schickt man Autos ins Ausland,
baut neue Häuser,
verputzt neue Fassaden,
und nennt das Fortschritt.
Doch unter all dem Putz
verfault das Herz der Stadt,
und keiner riecht es –
außer der Kurdin.
from
Meditaciones
Cuando no nos falta nada, aparece la gran insatisfacción.
from
Bloc de notas
sin escarbar demasiado sí tenía cierto interés en conocer sus raíces pero no corporales sino más bien las de su mente que no sabía exactamente qué era pero estaba allí como quien dice / desde siempre
from
dimiro1's notes
The other day I overheard two “vibe coders” talking about their project: “No, we need to build the backend first, and then the frontend will communicate like this and that...” Listening to them, I was reminded that the hardest part of software development isn't actually writing code. It's managing complexity.