-
2025-01-17 11:41:25
**Holy crap what a week! I can't believe the amount of progress that came out of just these few days. And a special thanks to nostr:npub16ux4qzg4qjue95vr3q327fzata4n594c9kgh4jmeyn80v8k54nhqg6lra7 for making this possible with me! Alright, let's get into it...**
## GitHub Blossom Upload Action
I started this week working out the GitHub action for blossom uploads, solving some issues with dependencies, which turned out to just be me not bundling my dependencies with the my build output. So anyway I ended up publishing it and sharing it with all of you.
nostr:nevent1qvzqqqqqqypzpwa4mkswz4t8j70s2s6q00wzqv7k7zamxrmj2y4fs88aktcfuf68qy88wumn8ghj7mn0wvhxcmmv9uq3zamnwvaz7tmwdaehgu3wwa5kuef0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qpqzskk7na9x9cgnzpvz7xufdn2y8wqxf00rnq7jg75z86lk30l6plspy9e9u
## Pipeline runner
### The plan
I can't believe all of this happened just this week. I worked out a plan with nostr:npub16ux4qzg4qjue95vr3q327fzata4n594c9kgh4jmeyn80v8k54nhqg6lra7 to first create a DVM that would be able to clone a given ngit(!) repository and just print the contents of any given pipeline `.yaml` file that resides inside that repository.
The DVM would have the following inputs
- git url (or Nostr address)
- branch
- pipeline (path to yaml)
### Proof of Concept
I was able to repurpose a dvm-git-watcher that i'd created earlier to create the DVM to run the pipeline. Created a POC where the CI runner actually takes the pipeline, executes it and gives back a response and decided to put up a little video demo:
https://cdn.satellite.earth/43463990dd11c9506989e5eda915757cf3ec1b32e8d472579cd2ee18d5685f0d.mp4
### Some improvements
Wednesday I added a NIP-89 announcement to the DVM where it just advertizes its existence in hopes of some validation that it is real, and that it is actually useful, and it hopes to be used and talk with other npubs to not be lonely...
So then i figured it was time to package it into an easier to distribute package, a Docker container. That would allow me to include the required tools, namely ngit-cli and the 'act' cli (used to run the pipeline).
### Troubles 😱
Adding the precompiled version of ngit got me into trouble with this error:
```shell
Error: Cloning into 'tmp/1ca8af464df5fc648b77db14e0e5e35ff64d6627a690e138e19298dd56573274'...
/app/ngit//git-remote-nostr: /usr/local/lib/libc.so.6: version `GLIBC_2.38' not found (required by /app/ngit//git-remote-nostr)
/app/ngit//git-remote-nostr: /usr/local/lib/libc.so.6: version `GLIBC_2.39' not found (required by /app/ngit//git-remote-nostr)
fatal: remote helper 'nostr' aborted session
```
I didn't really know how to proceed as it could be a Docker issue, a Deno issue, or an ngit issue.
Luckily nostr:npub16ux4qzg4qjue95vr3q327fzata4n594c9kgh4jmeyn80v8k54nhqg6lra7 knows his shit and saved me here. It turned out to be an issue that had to do with the ngit binary. Because ngit is compiled on a recent ubuntu version, it depended on some packages that the linux version my Docker image was based on did not have. Thus it failed.
Our solution was to compile ngit instead of using the existing binary, which took some trial and error to get working but eventually it did. It slowed down the build process significantly but alas, at least it works now!
### Moving on
After ngit worked I added the 'act' runner to the docker image and was able to control the host system's docker so it can run the isolated environments that have the pipelines run inside.
And so I was able to package up the thing, able to run on any machine, which led me to this little demo:
nostr:nevent1qqs9486y7cs6a9h7n4sk7sdv52qvuqyp80rj0eyg6zt7htfyt9wh4wgpp4mhxue69uhkummn9ekx7mqpz3mhxue69uhhyetvv9ujuerpd46hxtnfdupzpwa4mkswz4t8j70s2s6q00wzqv7k7zamxrmj2y4fs88aktcfuf68g4v3lk
The only issue I still have is getting the output of the pipeline properly fed back to the user. But that's some magic with log streams that I have zero experience with, so that's a nice challenge for next week! If you or anyone you know is a Stream magician, please let me know!
See you there!
-
2025-01-16 20:44:33
Before the time of Utensils, people lived in genuine harmony. They gathered in markets to trade freely, built homes where they pleased, and traveled without papers or permissions. Communities solved their own problems through discussion and agreement. When disputes arose, wise elders would help find solutions that satisfied all. Children learned from their parents or chose mentors from among the skilled craftspeople.
In those days, gold changed hands freely for goods and services. Each person kept what they earned. Communities would voluntarily pool resources for shared needs - wells, bridges, and roads. Those who had more would often help those with less, not by decree but by choice.
Neighbors knew each other's names. Doors were left unlocked. Children played in the streets until sunset. Gardens grew wherever people planted them. Merchants traveled between towns without inspections. Healers practiced their craft freely, sharing knowledge openly.
> Then came the Utensils.
In our land, Aldrich found the Silver Spoon. In the East, Emperor Chen discovered the Jade Chopsticks. The Norse kingdoms united under the Golden Fork. The desert peoples followed the Bronze Ladle.
Each Utensil, their holders claimed, granted divine wisdom to rule. Each promised protection and prosperity in exchange for obedience.
The changes came slowly at first. The Spoon Holder requested a share of each harvest to store for hard times. The Chopstick Emperor required homes to be built in specific ways to prevent fires. The Fork King demanded that travelers carry documents proving their loyalty.
At first, the Utensils did bring some genuine improvements. The Spoon Holder's collectors used part of their harvest share to help villages during droughts. The Chopstick Emperor's building codes truly did reduce fires. The Fork King's road patrols deterred the few bandits who had troubled merchants. The Bronze Ladle's water management systems helped farms flourish in the desert.
The early years saw stone roads replace dirt paths, connecting villages more efficiently than before. Granaries were built with better designs, preserving food longer. Some diseases decreased as the Chopstick Emperor's cleanliness codes spread. The Fork Kingdom's standardized weights and measures did make trade easier.
The Spoon Holder soon declared that carrying gold was dangerous and inefficient. They introduced sacred paper notes, "backed by the Silver Spoon's power." At first, you could trade these notes back for gold, but gradually this right vanished.
Scholars wrote lengthy memos about the divine wisdom of the Utensils, creating complex theories about why ordinary people couldn't possibly understand how to live without direction. They advised the Holders and were rewarded with special privileges, comfortable positions, and influence.
When anyone questioned this system, the Utensil Holders and their Experts would ask: "But who would build the roads without us? Who would help the poor? Who would protect you?" They spoke as if humans had never cooperated or helped each other before the Utensils came, and many began to believe it.
People grumbled but accepted. After all, the Utensils shone with otherworldly power.
Some remembered these early benefits when questioning the growing restrictions. "Remember how the Spoon Holder's men helped during the great flood?" they would say. "Surely they have our best interests at heart." The Utensil Holders carefully nurtured these memories, even as their power grew far beyond such humble beginnings.
More rules followed. The Spoon Holder's men began watching the roads, collecting portions from merchants. The Chopstick Guards enforced strict codes about proper behavior. The Fork Watchers kept lists of who attended the mandatory gatherings.
Children were taught the sacred histories of their Utensils. The Spoon's light blessed the worthy. The Chopsticks maintained harmony. The Fork brought strength. The Ladle provided guidance.
When people remembered the old freedoms, the Utensil Holders reminded them of the chaos before - though few could actually recall any chaos.
> But surely there must have been chaos, or why would the Utensils have come?
The Utensil Holders began to eye each other's territories. How dare the Fork King claim his metal was superior? How could the Chopstick Emperor suggest jade held more wisdom than silver? The Ladle Holder's bronze was clearly inferior to all!
The Utensil Holders pointed to their achievements - the roads, the granaries, the safer towns - as proof of their divine right to rule. They spoke of how they had unified squabbling villages, standardized laws, and created order. Few noticed how these very achievements had required less and less input from the people themselves.
Wars erupted. Armies marched under banners bearing their sacred Utensils. Men died believing their Utensil was the one true source of authority. Villages burned as soldiers searched for heretics who might secretly worship foreign Utensils.
The Utensil Holders demanded more from their people - more food, more gold, more obedience. They placed watchers in every village. They required written permission for travel between towns. They forbade more than three people from gathering without a Guardian present.
"It's for protection," they said, holding their Utensils high. "How can you doubt the sacred silver?"
And indeed, their guards did stop some thieves, their inspectors did prevent some fraud, their builders did create some useful works. But these benefits came with an ever-increasing price in freedom, until the cost far exceeded any advantage. Yet by then, most people could no longer imagine providing these services for themselves, as their ancestors had done.
Towns built walls, not against invaders but to control who could enter and leave. The Utensil Holders required everyone to wear markers showing their village of origin. They appointed observers in every community to report suspicious behavior - like speaking of the time before Utensils.
Children were taken to special houses to learn proper reverence for their Utensil. Families who taught the old ways disappeared in the night. The Holders declared certain words forbidden, certain thoughts dangerous, certain memories treasonous.
Now, centuries later, the Utensils rule absolutely. People bow when the sacred implements pass by. They inform on neighbors who question the Utensils' power. They offer their children to serve in the Utensil temples.
The latest marvel was Utensil Technology - enchanted mirrors and crystals that watched people's movements, recorded their words, and tracked their trades. "Only criminals fear being watched," the Holders proclaimed, as their surveillance spread into every home and market. The crystals even allowed them to freeze people's paper money if they spoke against the Utensils.
The Utensil Holders formed special partnerships with the largest merchant guilds. These favored merchants received special permissions, protection from smaller competitors, and access to the new paper money first. In return, they helped enforce the Holders' rules and collected information about their customers. Small traders and craftsmen found themselves crushed between these powerful allies.
The latest decree requires all newborns to be blessed by touching their foreheads to their realm's sacred Utensil, marking them forever as its property. Parents compete for earlier blessing times, believing this shows greater devotion.
The wars continue. The Fork Kingdoms battle the Chopstick Empire. The Ladle Realms raid the Spoon Holdings. Each believes their Utensil must rule all.
And in quiet corners, in hidden places, a few elders still whisper stories of the time before - when humans lived without Utensils telling them how to live. But fewer remember with each passing year. After all, who could imagine a world without the guidance of sacred silverware?