@zyak Fair warnings. zs is incredibly simple, deliberately so. LMK if you have any q's when trying it out, it probably has confusing docs ๐คฃ
Problems are Solved by Method\" ๐ฆ๐บ๐จโ๐ป๐จโ๐ฆฏ๐นโ ๐โฏ ๐จโ๐ฉโ๐งโ๐ง๐ฅ -- James Mills (operator of twtxt.net / creator of Yarn.social ๐งถ)
@zyak yeah I think so. Btw, if you're looking for an SSG, I quite like the one I maintain over at https://zs.mills.io
(4) The First Brain Was Just Uploaded To A Computer - YouTube -- Wow ๐ฎ This is pretty amazing! Scientists and this new company called Eon, have managed to replicate the entire structure of a fruit fly's brain, exactly. It behaves exactly like a fruit fly does, in it's virtual simulated world. The only thing they're missing is the strengths of the connections and weights of each neuron and the state of the chemical "soup"? of the original fly, so it carries no memories and has no "mind", but structurally it works! Holy shit! Wowza ๐ฑ
@david I use Poste.io internally Maddy at the edge -- I've also hears good things about Mail-in-box, Mailu and Mox
@david Ahh, I'm only confused then because I've never seen anything quite like this, nor have I played and role playing games on a table-top either.
what am I saying here? Can someone explain it to me in words? ๐ง
@david But it was on the side of the road!!! and she had her pants around her ankles, stark naked for all passing traffic to see ad she did a shit!!! ๐ฉ
@david yea but it's very windy, uncomfortably so and very crowded ๐คฏ
@athanasia The main problem is that I don't front mbox.blue with my Edge infra that I front the rest of my infra with. So mbox.blue is kind of independent if that makes sense. It has nothing in front of it to protect anything. So I would just put a simple Caddy PoW at it's reverse proxy and call it a day if that works for you? -- I think I'll make this per-box/per-user configurable too?
๐ Calling all decentralised enthusiasts that still remembers and use IRC ๐
Please come join us in a new, truely, decentralised IRC-based chat experience by standing up your own Parley instance on your own domain (bring your own OIDC auth or use the built-in).
Pick your favourite IRCv3-compatible client (there's heaps out there!).
And peer with either me james@mills.io or Admin -> Peers -> Add mills.io or @david via david@ratha.us or simply ratha.us (in Admin -> Peers -> Add).
See you online! ๐ค #decentralised #irc #chat
@david I just wanted some cheap USB disks to test with, nothing fancy LOL, serves me right ๐
@itsericwoodward Then by all means, follow the instructions at https://git.mills.io/prologic/parley and setup your own instance on your own domain. It's partly inspired by Twtxt/Yarn.social and Salty.im -- in at least the way teh DNS discovery and WKID works. Once your instance is up and running and you've gone through the /setup and created yourself an account (or seti it up with an appropraite ODIC IDP) try something like /msg james@mills.io Hey! at which point you should automatically start peering with my instance. You should then be able to /join <a href="?search=lobby1" class="tag">#lobby1</a> (a globally federated channel already across 2 instances so far). ๐ค
For the curious, this is fully documented with roleplay Alice/Bob. I was going to test this with @david but we both got busy, but now I'm on holidays from work for a month so ๐คทโโ๏ธ ๐คฃ
@david ping me on IRC when you have a couple of spare hours ๐
gitxt is a purely decentralised git forge. There is no federation protocol, no instance-to-instance API, no accounts on other peopleโs servers. Each forge instance is fully independent; collaboration is an act of publishing and reading plain text files over HTTP
@fossham I honestly think the most unique and interesting thing about doing this at all is that it is in fact inspired directly by Twtxt / Yarn.social itself -- That is to say, I am confident I can do this in such a way as to be "truly decentralised", no inter-networking like ActivityPub, no centraised forges like Github or Codeberg. You run your instance, I run mine, we just are able to collaborate. Think exchanging patches over Email, just without all the hard-to-learn ways to do that (enough though it's not hard for some of us, but still).
@movq So the way this works in my design/prototype is this. You fork my repo in the app, it clones it to your own forge, follows my instance and it's repo for updates and ping my instance to indicate "you've forked me". Then when you publish changes, I can see them by pulling your instance's feed. It all works on the same plain text principles of Tstxt itself. The feeds are "pull"-based with push-based "pings" on things like "someone forked your repo", "a new issue has been raised against your repo", etc.
I am finally building a Twtxt / Yarn.social inspired Git forge. I'm actually quite confident that y'all will quite like it, but I won't post links yet until I'm quietly confident in its design, functionality and behaviour(s).
Stay tuned ๐ค It'll be like no other Git forge you've ever seen! ๐คฃ Actually, it's already more like cgit than anything with plain text feeds that power it's "pure decentralization" as you can no doubt imagine ๐ #twtxt #git #forge
@Sumomo Ahh if you're using the 'ol twtxt client from buckket, that thing isn't really maintained anymore. I recommend you check out one of the clients listed on https://twtxt.dev or even just https://twtxt.app
@itsericwoodward Dropped you en Email ๐ง
@itsericwoodward Can I count you in as a potential customer then? I'll find a way to DM and share details with you. But rest assured it'll have everything you could possibly want ๐
$599 retail purchase $9.95/month optional subscription
โ๏ธ Would you pay this for a fully self hosted home cloud? ๐ง
Oh man wow ๐ฎ Problem 9 was quite hard ๐ฑ I had to build two new functions in the Mu stdlib for computing combinations and permutations, but then the combinations of range(1000) for triples such as a + b == c is enormous! So i had to write iterator versions of these to do lazy evaluation. Anyway solution follows:
#!/usr/bin/env mu
// Special Pythagorean Triplet
import "iter"
fn usage() {
print("Usage:", args()[0], "<n>")
}
fn sqr(x) { x * x }
fn main() {
if len(args()) < 2 {
usage()
exit(1)
}
n := must(int(args()[1]))
print("n:", n)
// For a < b < c and a + b + c == n, both a and b are strictly less
// than n/2. Generate only (a,b) combinations and derive c directly. This
// keeps the search lazy and reduces n=1000 from C(999,3) = 165,668,499
// candidate triples to C(499,2) = 124,251 candidate pairs.
pairs := iter.combinations(iter.range(1, n / 2), 2)
triples := iter.map(pairs, fn(xs) {
a := xs[0]
b := xs[1]
return [a, b, n - a - b]
})
// Enforce b < c; a < b is already guaranteed by combinations over an
// increasing range, and a + b + c == n holds by construction.
triples = iter.filter(triples, fn(xs) {
return xs[1] < xs[2]
})
// Euler 9 has one answer for n=1000. find() stops the entire upstream
// iterator chain as soon as the first Pythagorean triple is found.
answer := iter.find(triples, fn(xs) {
return sqr(xs[0]) + sqr(xs[1]) == sqr(xs[2])
})
print(answer)
if answer != nil {
print(answer[0] * answer[1] * answer[2])
}
}
main() It is such a nice feeling that Mu is such a capable little language ๐ And I decided to write code code in Mu by hand ๐ค haha ๐คฃ and start solving Project Euler problems, like Problem 8 which works out to be a nice elegant solution in Mu:
#!/usr/bin/env mu
// Largest Product in a Series
import "fp"
import "sys"
fn usage() {
print("Usage: cat |", args()[0], "<n>")
}
fn products(xs) {
return fp.reduce(xs, 1, fn(x, y) {
if y == nil {
return x
}
return x * y
})
}
fn main() {
if len(args()) < 2 {
usage()
exit(1)
}
s := must(sys.read_all(0))
if len(s) == 0 {
usage()
exit(1)
}
n := must(int(args()[1]))
r := fp.max(fp.map(fp.sliding(fp.map(s, int), n), products))
print(r)
}
main() @david Please report any logs from the Javascript console if you can. It's possible the one commit I made to the Swag framework might be the culprit here. Not sure.
I'm not seeing any of what you're describing, But then again I only use the app on mobile, on iPhone. There's only been basically a few commits to the App and one to Swag. That's it.
@david Do you mind re-testing too with the updates i just pushed out? ๐
@david Also if you wouldn't mind writing up an Issue for the image/upload problem too, that would be great ๐ I still haven't solved it properly, but I'll try to do so today. There's also an issue uploading images via the yarnd API path from the Twtxt App too, which I can replicate with basically any photo from my iPhone's Photo gallery hmm ๐ค
@david Are you able to describe this bug as an Issue in the Gitea Issue Tracker such that it can be reproduced and fixed? ๐
@david No idea ๐คท We shall see! haha ๐
@david Ahhh so you had a WebP you downloaded from somewhere on your Phone and you're trying to uploaded it via the Twtxt.App? ๐ค
@david Is this from your camera, or some other source of WebP somewhere? ๐ค
@david Why not indeed ๐ I'm taking nearly a whole month off from Sept 10 to Oct 6 Haha ๐คฃ
@david I don't believe in impossible! ๐คฃ
@david Cool! ๐ Though I think this can be improved somewhat.
@david Might not have tested that path very well. Can you make a note of this on Gitea?
@david you're not missing anything. It is only set on grant / connection time. If you disconnect and reconnect, it should become an option. I haven't figured out how to refresh capabilities.
@david You're not missing anything. It is set on grant / connection time. So disconnecting and reconnecting will give you that option. I haven't figured out a way to refresh backend capabilities like this.
@david I mean we can probably do that I suppose. I'd make it an option in Settings though?
@david I see it now. Is this also a problem in the app too? Or just yarnd or both?
@david Sorry, I'm not seeing what you're saying? ๐ค
@david Yes!
So, a hobby OS, just like Linux was for Linus?
Although this is really an exercise is self-hosting a lagnguage, then self-hosting the language to build a self-hosting OS. It's all meta-circular.
@david It's somewhat expected to have a fair bit of Assembly (machine code) to get some of the bits you need going. But I think I can reduce this a bit. Let's see...
@movq Oh I agree. Long-term the whole thing is completely "fucked". But it says more about "Cloud" and "X as a Service" than about "AI" itself. It's a bit like all these fucking entertainment subscription services you need to entertain one's self. How many subscriptions does one need to Hulu, Netflix, Disney+, Stan, etc, etc.
@GabesArcade this sort of tells me two things 1) that enterprises aren't really engaging with OpenAI and establishing lucrative enough contractual agreements and 2) users aren't willing to pay for ChatGPT or if they are aren't willing to pay much more than $20 a month
@david Have you never seen or heard me say AI is basically Artificial Incompetence? ๐คฃ
@thoshi I wouldn't bother if I were you ๐ They're both fairly outdated protocols and very much an "silo" IMO. THey don't make very good places to host your Twtxt feed either.
And @lyse is right. Not being on Github is a good thing IMO. Even when I was there with all my many projects, I basically got the same amount of "attention" as I do now. The only real way to gain more "attention" is to artificially play the "game". You know. The stupid "Stargazer" one, and whatever you can to get into the "Top 10 X" charts. -- But ultimately that doesn't buy you "quality" contributors or users or whatever. So it's all pointless.
@movq So I see it slightly differently... Over the years I have recieved great contributions from the likes of yourself and @lyse and the many forms of @bender and his friends ๐ Hell even others along the way that have come and gone. Likewise I also think you have recieved many contributions to Jenny over the yeras in much the same way, perhaps not in patches, but user reports, feedback, etc.
So I think what I'm saying here is this... Ever since leaving Github (like you), I find that my desire to continue to build up the community we've built here and to contribute to grow and cultivate it is important to me. My desire to thwart and eliminate useless traffic like bots and ai even strongers.
I want to find a good balance.
@david OH no ! ๐ My wife caught COVID some weeks ago, then we got sick again with a cold, it was awful ๐ข
Oh god ๐คฃ I mean I had this idea to re-invent "Git hosting", but failed. Maybe I'll try it again. I dunno. The thing is I hardly get "Issues" really, only when I ask nicely, of folks I know every well ๐คฃ So think at much "smaller scale" we need a different solution, and I think @movq is on to something, but not to the extend implemented, somewhere in the middle I think? ๐ค
@david Bah you ๐คฃ Do you know how hardโข it is to write a compier, a self-hosted compiler that has two runtime engines? ๐
(1) Why The Oceanโs Top Predator Refuses to Hunt Us - YouTube -- The first half of this documentary is amazing! ๐ฎ -- The remaining half however is sad and depressing, making me never want to visit another zoo again ๐ข
Does this seem right to you so far @david ? ๐ค
2026/07/18 02:55:52 sync-reaper: observe-only pass โ 1145 namespaces, 3 anchored, 1089 undatable, 0 idle candidate(s), 0 reaped
So far only 3 users of the Twtxt App have achieved their device settings with a recovery key? ๐
and @david your rename shipped ๐ it's "Generate recovery code" now (you were right โ mints a fresh one each press), + it asks before replacing an existing code so you don't nuke the one you saved ๐
Posting the review and plan here for posterity as it is related to this thread: https://canvas.mills.io/a/6QVGjzRW
The PR(s) as-is will likely not go ahead I'm afraid. More work to be done, but this is basically all about the "Recovery" story and how to anchor and notion of an "account" without well umm an account ๐คฃ
@lyse Can you explain this like i'm five? ๐คฃ Scgeenshot?
@dce Fixed! ๐ฅณ That 403 was our bug โ connect was checking your token via /api/v1/user (needs read:user), but your token's scoped to just the repo so it can't. Now it validates against the repo itself instead ๐
@david Oh yes blame me for you not having fun on the "Play Station" ๐ Haha ๐คฃ
@david I think it might be a bug i just fixed ๐ค
@dce So let me get this straight... You want to store your feed on a Codeberg repo right? But you want to clone that repo down somewhere else to serve it on a different location. Right? And you'd like to use the Twtxt App (https://twtxt.app) to front all of this? Right?
@david Yes, but then I have to create and maintain an account I'll never use ๐คฃ
@dce Ahh! Let's fix the 403 error then? I don't have access to Codeberg, so I can't reasily test. Can you walk me through what you tried and any other details? I'll get this fixed.
@david Of course ๐คฃ Incognito sessions store nothing once closed. ๐คฃ
@movq @lyse Are you clients remaining compatible with Hash v1 in case older clients are still well not upgraded? ๐ค
also, just to clarify, we built the hosted Service as the last lowest rung ladder for non-technical people. I fully expect most technical people will spin up their own publishing backend or use Github or similar so that long-term the ecosystem still remains very much decentralized.
@david Found it. Some bugs in the "claim limiter". Fixing...
@david Please write an issue for this ๐ I don't mind which way we go!
let's just see if something like this crops up again.
The only place where this would be an issue is the Twtxt Search Engine -- But as the GDPR also points out:
Art. 17
The one place the "it propagated and I can't recall it" problem is legally acknowledged is Art. 17(2), and it explicitly scales to what's technically feasible:
"โฆthe controller, taking account of available technology and the cost of implementation, shall take reasonable steps, including technical measures, to inform controllers which are processing the personal data that the data subject has requested the erasureโฆ"
Best-effort, given the technology. A decentralised, append-only, content-addressed feed is the available technology, and its limits are baked into the standard the law applies. Nobody โ not the user, not you โ is obliged to guarantee every cached copy vanishes.
So just because I enjoy this kind of thing (looking into laws and trying to understand them...):
GDPR is about roles, not ownership
There's no property right in personal data under GDPR. The whole regime hangs on three roles:
- Data subject โ the person the data is about.
- Controller (Art. 4(7)) โ "the natural or legal person โฆ which, alone or jointly with others, determines the purposes and means of the processing of personal data."
- The rights in Arts. 16 and 17 are exercised by a data subject against a controller. They compel a third party to rectify or erase. They are not self-executing duties that a piece of software must expose.
That's the key. In your architecture, for a user's own posts about themselves sitting in their own feed on their own device:
- the user is the data subject, and
- the user is also the only person "determining the purposes and means" of that data.
There is no third party controller to compel. The "right to erasure" is a right to make someone else delete โ and there is no someone else. It is satisfied the instant the user can change the file. A UI button is a convenience, not a legal requirement. Omitting it removes zero rights, because the data is a plain-text file the user can edit or delete by any means โ editor, sed, git, their file manager. Full practical control is retained; nobody is being denied anything by anyone.
@david well I happen to agree because one of the fundamental problems is that you can't have a tax file specification and assume that you can edit it freely by hand as a human and then clients that deal with that specification in machine possible mechanisms the two kind of conflict because humans get things wrong machines don't
@david heads up ๐ that verification code never reached you โ outbound email was broken on my end (my mail relay was rejecting twtxt.net senders ๐คฆโโ๏ธ). Fixed + deployed now ๐ฅณ give the hosted feed another go, it'll land this time ๐ค
@itsericwoodward Wrote it up ๐ Single-user twtd API is now documented (plain JSON, one bearer token) โ posting, uploads, profile, followers + WebFinger: https://git.mills.io/yarnsocial/twtd/src/branch/main/API.md ๐ Shout if anything's unclear for TwtKpr ๐
New in the Twtxt App ๐ฅณ a Hosted feed backend โ claim a nick, one tap, no account, no server, nothing to run. Your feed lives at https://twtpub.com/u/yournick and you're posting from the app straight away ๐
@balloon-fu-sen Thank you for reaching out ๐ I had alraedy done so via Email too a few days back and she upgraded her Pod to yarnd/0.16.x ๐
@david Well... I can't! becuase the email supplied was nobody@invalid or some shitโข ๐ฉ
@david I agree, the App (https://twtxt.app) really does work quite nicely ๐
@david that was literally one of the messages I got this morning with an invite request to join this pod ๐ฑ
@david Yeah the search engine/crawler has only found 28 active users in the ecosystem so far ๐
@david It's all fixed now, for good ๐
๐ This pod, twtxt.net is now open to the general public again to join. However it is invite-only with admin review and approval/rejection. Welcome ! ๐
I believe we've nailed all the bugs down๐คฃ Though i am sick at the moment so i'm not at my best ๐ข
๐ฅณ Finally! After nearly 4 years, yarnd v0.16.0 "Silver Sojourner" is out! ๐ Twt Hash v2, SQLite FTS5 search, HTMX-powered UI, first-time setup wizard and literally hundreds of bug fixes ๐
Release notes: https://git.mills.io/yarnsocial/yarn/releases/tag/0.16.0
Upgrading is fully automatic โ the Twt Hash v2 migration re-fetches all feeds on first start, so expect the first cycle to be a bit heavier. Images on Docker Hub as prologic/yarnd:0.16.0 ๐
cc @kat @abucci @shinyoukai @eldersnake ๐
Yeah to @david's point re Editing. It's only really safe to do so if you are sure that no-one has yet fetched your feed or replied to your Twt. But even then, you have to be quick ๐คฃ Editing/fixing a Twt inside of an existing thread is "oaky", as long as it also doesn't get forked and becomes the root of a new conversation ๐
๐ definitely using the Twtxt App as my daily-driver now for Twtxt/Yarn. Not using twtd however, as I just pair the app with my already existing yarnd powered profile on twtxt.net
So... Quick count. Hands up those who are using the Twtxt App? ๐ค -- And who's also pairing this with the twtd publishing backend?
@bender @david Good debugging session ๐ Sounds like the root cause is twtxt.app on mobile โ +00:00 timestamps and quoted mentions. I'll dig into Yarnd's side of that ๐ง
@bender Yeah, Yarnd's mention parser is pretty naive โ if twtxt.app wraps the mention in quotes it probably strips them wrong. Worth fixing ๐ค
I'm starting to use the twtxt.app as my daily driver now as opposed to yarnd and my pod twtxt.met ๐ฅณ
I will aim to have most issues bugs and user experience problems, identified and fixed by this weekend!
there is for example, a user configurable and default instance configuration called only one postponed domain
@david I agree! Let's get them back into the fold ๐ค
@bender Please create an issue for this too! Probably against twtd right? We should validate new fetchers and see if they are real clients or not. I think yarnd already does ybis quite well? ๐ง
If someone would be so kind as to file an issue against the repo? ๐
@GabesArcade Yes, because if you edit/delete a Twt after the ecosystem has ingested it, well there then are two versions ๐ Just be aware of edits/deletes, especially if someone has already replied to said Twt ๐คฃ
@GabesArcade LOL You can Email me, hit me up on Signal, orc IRC. Take ya pick I'm around ๐
@GabesArcade by asking me nicely ๐คฃ Which you just did! If you either provide me a desired username and password and secure medium to give this to you I can do that easily, or alternative a desired username and email address (never stored, only hashed), after which you can "Reset password".
So I decided to change tact a bit with GoNIX and instead of trying to build apure Go browser from scratch (which I kinda of half succeeded, in at least it was able to render most static ssr sites), I've instead decided to write a new browsered using the Chromium Embedded Framework, otherwise known as CEF. So now I have a fully working browser in GoNIX ๐ -- However since my goal is to keep GoNIX pretty lcean and mostly written in Go, I delegated the cef part(s) to an OCI container image and run that with GoNIX's box (command-line container runtime). It works great ๐
๐ mbox.blue now support custom domains you can point at your ~/public_html or ~/.mbox/expose app/service. Enjoy! ๐
So I've been working on GoNIX the last few days... Which is derived from ยตLinux -- At least it's entire build process. GoNIX however has a 100% Go userland, including the init process, package and service management.
Now... As an experiment, because I was able to make much process on enhancing the build tools and package management, I decided to see if I could build a "Desktop" Gui of sorts...
I still wanted it to be fairly minimal and lightweight. So I went with wayland (of course) and labwc and yambar. So far I'm liking the result ๐ 42 packages in the wayland-desktop meta port. Not too bad. Not sure if I can slim that down anymore... But trying to avoid Mesa/GL as that drags in far too much "cruft".
Olisse ยท 2026-06-20 22:27 UTC haihaihiii! mbox.blue is awesome ;)
So nice of the very few folks that have discovered mbox to say such nice things about my little experimental project and free service offering ๐
Behold, I bring you (reincarnated) mbox.blue -- A tiny shared linux server based on / around containers (my own implemtnation).
495 turns and about ~4hrs alter I won! ๐ Small map, 2-players, myself and an AI player. ๐
-- It took forever to beach the island the AI player was on and get enough Galley's and Swordsmen just to push back and eventually slowly destroy all enemy units and capture all cities! ๐คฃ
The auDA, and some
WOW! I just had to share this little story I ran into today.
I tried to register a .AU Domain the other day, only for it to instantly fail.
I emailed support, which took several days to respond, only for them to respond by saying (paraphased):
We're sorry, but the identify checks failed. The 3rd-aprty service doesn't tell us why, But, please make sure that the ID you used matches the Full Name, including any Middle name(s).
I used my Passport number. Which of course has my First, Middle and Last Name.
I can only assume at this point that the checks failed on the missing "Middle name". Why? Because the Registrar I use has a database and user interface for "contacts" that only have support for First name and Last name. NO Middle Name.
๐คฆโโ๏ธ This is basically stupid at this point. Systems cannot be trusted at the most fundamental level, no matter how good they are.
Until we figure out how to build a system that allows an individual to prove to another entity that they are who they say they are without a shred of doubt (i.e: cryptographically), we're stuffed.
There is literally nothing I can do in this case. The auDA are at fault. The 3rd-party identify service (unknown) are at fault. The registrar are at fault. Hell, even the Passport office are at fault for even bothering to or requiring a Middle name.
How has "identity" come to this?
This year for some reason or another, I decided to purchase an Ocarina, I've been practising a fair bit every now and again, basically during work breaks and sometimes in the afternoon / evenings (not enough to annoy the family ๐คฃ) Anyhoo, that was 3 months ago, since then I've built up a bit of a Repertoire:
- Silent Night
- My Bonnie Lies Over the Ocean
- Amazing Grace
- O Holy Night
- Happy Birthday
- Greensleeves
- Scarborough Fair
- Sheโll Be Coming โRound the Mountain
I've now decided to purchase a slightly better quality Ocarina, the one I originally bought was a cheap $28 one, I'm now upgrading to a more professional instrument worth about $80 -- Wish my luck ๐
Well it's ~2am and I finally defeated the AI player in a game of Frontier Crown ๐
-- On that note I'm now going to bed, I've made so many improvements to the aesthetics (UX) of the game, the mechanics, and it's now quite nicely playable ๐ G'night! ๐ด
Trying an experiment. Created a Github repo for mu over at https://github.com/prologic/mu as a social experiment to see if we can maintain a tailored Github docs-only repo of a project, see if it gets any interest ๐ค
I think I'll never eat McDonald's fries/chips ever again ๐ฑ https://www.youtube.com/shorts/ITRtnPPJPsY
Behold! ๐ฅณ My first (hopefully it doesn't fail ๐ค) ยตSaaS (microSaaS)
Turn PDFs into audiobooks.
(only supports PDF(s) at the moment, books, papers, etc)
Happy reading/listening ๐ค ๐ #Audiofern #Audiobooks #microSaaS
Hmmm ๐ค
Excluding merges, 1 author has pushed 171 commits to main and 175 commits to all branches. On main, 294 files have changed and there have been 52880 additions and 18269 deletions.
From the Mu (ยต) Gitea Activity Tab
Whoo! I fixed one of the hardest bugs in mu (ยต) I think I've had to figure out. Took me several days in fact to figure it out. The basic problem was, println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector ๐คฆโโ๏ธ
I just completed "Printing Department" - Day 4 - Advent of Code 2025 #AdventOfCode https://adventofcode.com/2025/day/4 โ Again, Iโm doing this in mu, a Go(ish) / Python(ish) dynamic langugage that I had to design and build first which has very few builtins and only a handful of types (ints, no flots). ๐คฃ
I just completed "Lobby" - Day 3 - Advent of Code 2025 #AdventOfCode https://adventofcode.com/2025/day/3 -- Again, I'm doing this in mu, a Go(ish) / Python(ish) dynamic langugage that I had to design and build first which has very few builtins and only a handful of types (ints, no flots). ๐คฃ
I just completed "Gift Shop" - Day 2 - Advent of Code 2025 #AdventOfCode https://adventofcode.com/2025/day/2 -- But again, I'm solving this in my own language mu that I had to build first ๐คฃ
I don't know what this fruit is called! The waiter at breakfast told me the Vietnamese name but I've since forgotten ๐ 
I'm kind of tired of late of telling support folks, for example, ym registrar, how to do their fucking goddamn jobs ๐คฆโโ๏ธ
Hi James,
Thank you for your patience.
There are several reasons why a .au domain registration might fail or be cancelled, including inaccurate registrant information, ineligibility for a .au domain licence, or issues related to Australian law.
For a full list of possible reasons, please see this article: https://support.onlydomains.com/hc/en-gb/articles/6415278890141-Why-has-my-au-domain-registration-been-cancelled
If you believe none of these reasons apply to your case, please let us know so we can investigate further.
Best regards,
Yes, so tell me support person, why the fuck did it fail?! ๐คฌ
Speaking of WAF(s) / Web Applicaiton Firewalls -- I actually had forgotten that not only have I designed a new WAF from scratch, but I've actually implemented it already, and done some local testing. I just haven't put it into production yet... What od you think @aelaraji ? ๐ค https://git.mills.io/prologic/caddy-waf
Tired to re-enable the Ege route to git.mills.io today (after finishing work) and this is what I found ๐คฏ Tehse asshole/cunts are still at it !!! ๐คฌ -- So let's instead see if this works:
$ host git.mills.io 1.1.1.1
Using domain server:
Name: 1.1.1.1
Address: 1.1.1.1#53
Aliases:
git.mills.io is an alias for fuckoff.mills.io.
fuckoff.mills.io has address 127.0.0.1
PS: Would anyone be interested if I started a massive global class action suit against companies that do this kind of abusive web crawling behavior, violate/disregards robots.txt and whatever else standards that are set in stone by the W3C? ๐ค
Fark me again with the bots. This time DDoS-style crawling from hundreds of IPs and dozens of ASN(s) wtf?!
I've had to disale the Ingress to my Git instance for the time being,
i need to sleep and I can't fight this :/
Fark me ๐คฆโโ๏ธ I woke up quite late today (after a long night helping/assisting with a Mainframe migration last night fork work) to abusive traffic and my alerts going off. The impact? My pod (twtxt.net) was being hammered by something at a request rate of 30 req/s (there are global rate limits in place, but still...). The culprit? Turned out to be a particular IP 43.134.51.191 and after looking into who own s that IP I discovered it was yet-another-bad-customer-or-whatever from Tencent, so that entire network (ASN) is now blocked from my Edge:
+# Who: Tentcent
+# Why: Bad Bots
+132203
Total damage?
$ caddy-log-formatter twtxt.net.log | cut -f 1 -d ' ' | sort | uniq -c | sort -r -n -k 1 | head -n 5
61371 43.134.51.191
402 159.196.9.199
121 45.77.238.240
8 106.200.1.116
6 104.250.53.138
61k reqs over an hour or so (before I noticed), bunch of CPU time burned, and useless waste of my fucking time.
WOW LOL
fetch https://weaknotes.com/users/david: status 500 Internal Server Error
First real test failed trying to lookup / follow @david@weaknotes.com
Thank you for the encouragement and love and kind words, @lyse @movq @bender @doesnm and others along the way I'm not sure of their feed uris ๐ I'll keep at it, but for the time being I will keep my distance, mostly off IRC, because I don't have the energy to spare in that kind of engagement (what//if the worst happens, it's so draining). I need to remember what I ever did any of this for, it was back in ~2020 and I wanted really to build small interconnected communities that any non "tech savvy" person (more or less) could also benefit from ane enjoy. Even if there are aspects of the specs we've built/extended over time that aren't "perfect"โข, they're "good enough"โข that they've last 5+ years (I believe this is 6 years running now). I want to spend a bit of time going back to why I did any of this in the the first place, and get a little micro-SaaS offering going (barely covering running costs) so encourage more folks to run pods, and thus twtxt feeds and grow the community ever so slightly. Other than that, I plan to get the specs "in order" to a point (with @movq and @lyse's help) where I hope they'll stand the test of time -- like SMTP.
Thank you all ! ๐
I just successfully used my own SnipMail service with a real business, whoohoo! ๐ฅณ
I'm building a service that lets you:
create and manage disposable, brandable email aliases so you can track leaks, forward important messages, and keep your real inbox clean.
I've just finishing building it for the most part, and have cut a v0.1.0 release. It's currently closed source (to be decided later) and now open to beta testers. cc @bender ๐ I fully intend to monetize and offer this as a paid service in teh coming weeks/months, but beta/invite-only testers and early adopters/users first ๐ค
Okay folks I'm calling it. See y'all again next time. Hopefully more of you make it next time ๐ค
๐ Reminder that we're starting up our social calls again (monthly), RSVP here ๐ค It starts in 13h27m ๐ Hope to see some/all of you there ๐
๐ฅณ Just released Gatherly v0.3.0 ๐ค -- My instance is available at: https://gatherly.mills.io (free for anyone to use)
Hmmm ๐ง I'm annectodaly not convinced so-called "AI"(s) really save timeโข. -- I have no proof though, I would need to do some concrete studies / numbers... -- But, there is one benefit... It can save you from typing and from worsening RSI / Carpal Tunnel.
I disabled the compression of logs on my edge, which I'm hoping will fix the "instability" I see every now and again where my edge network just "falls off the face of the earth". Some folks don't really appreciate / understand this, but Disk I/O can kill your application(s) no matter what. I/O Wait is a real thing.
I keep getting this email occadionally:
Your iCloud storage is almost full
Now for various reasons, I don't want my children to be using iCloud to store data, files, photos or any of the sort. They're free to use iMessages, and other Apple services like the App Store, etc, but not storage.
So I've set about blocking iCloud Storage API(s) via AdGuard Home tonight as well as ensuring that my local network (client users) cannot bypass DNS policies and get out other sneaky ways, because some applications will just use other DNS servers, or DOH or DOT.
Pretty happy with my zs-blog-template starter kit for creating and maintaining your own blog using zs ๐ Demo of what the starter kit looks like here -- Basic features include:
- Clean layout & typography
- Chroma code highlighting (aligned to your site palette)
- Accessible copy-code button
- โOn this pageโ collapsible TOC
- RSS, sitemap, robots
- Archives, tags, tag cloud
- Draft support (hidden from lists/feeds)
- Open Graph (OG) & Twitter card meta (default image + per-post overrides)
- Ready-to-use 404 page
As well as custom routes (redirects, rewrites, etc) to support canonical URLs or redirecting old URLs as well as new zs external command capability itself that now lets you do things like:
$ zs newpost
to help kick-start the creation of a new post with all the right "stuff"โข ready to go and then pop open your $EEDITOR ๐ค
I just created a zs blogging template which I'm going to use for https://prologic.blog and I might starting writing long-form again soonโข ๐ So far the "blogging" template/engine (if you weill) is quite simple. It comprises essentially of an index.md a prehook and a few utilities:
$ git ls-files
.gitignore
.zs/config.yml
.zs/editthispage
.zs/include
.zs/layout.html
.zs/list
.zs/months
.zs/now
.zs/onthispage
.zs/posthook
.zs/postsbymonth
.zs/prehook
.zs/scripts
.zs/styles
.zs/tagcloud
.zs/taglist
.zs/years
archives/.empty
assets/css/site.css
assets/js/main.js
index.md
posts/hello-zs-blog.md
posts/on-tagging.md
posts/second-post.md
tags/.empty Global update: Trump in Scotland says EU trade deal has 50-50 chance as tariff row grows. Gaza sees 9 more starvation deaths (122 total); UN says famine is deliberate. Thai-Cambodia clashes kill 16, displace 135k. US raid in Syria kills top ISIS leader & sons.
After many weeks and probably at least a hundred hours of research, discussions and in-person viewing, I think I've finally come up with my Final Choices (shortlist) of a Hybrid Camper / Caravan that I think will suit my family and that I'll enjoy (far less work for me to setup and teardown). The one at the top of the list I'm leaning towards os the SWAG SCT16 Family 4B
#Camping #Campers
Been spending a lot of time researching campers as I want to / plan to upgrade our current Camper Trailoer (forward fold) Stoney Creek XL-FF6 to a slightly larger Hybrid Camper/Caravan with ensuite, internal kitchenette, external full hitchen, pop-top roof and twin bunks.
This is the summary and whittling down of my research so far: https://wiki.mills.io/s/1103bc9c-dd75-4a98-b64b-8dadc5b0e51f/doc/comparision-Ln03Moiibq
How you can tell a "review post" on some random website was written by AI?
Ergonomically nicer than its binocular counterpart
How exactly is this a reason to avoid?! ๐คฆโโ๏ธ
https://threadreaderapp.com/thread/1935344122103308748.html Interesting article on how ChatGPT is rotting your brain ๐คฃ
Great article from Tailscale about how security policies we've often seen in many large complex organizations that we all love to hate don't actually provide the security that we assumed.
I'm finding this very interesting... An evolved neural network that plays the game of tic-tac-toe and so far is a pretty decent player. Here is a visualization of it's evolved "brain" that underwent GA (genetic algorithm) training with classification learning + self-play. 
prologic@JamessMacStudio
Sun May 25 21:44:41
~/tmp/neurog
(main) 130
$ go build ./cmd/ttt/... && ./ttt
Generation 27 | Fitness: 0.486111 | Nodes: 44 | Conns: 82
... experimenting with building and training a tic-tac-toe game, which evolves a. neural net that learn to paly the game against the best evolved champions ๐
Farrrk me Google search is and these days. Will they please "fuck off" with this Gemini AI garbage at the top that takes forever and is distracting as shitโข ๐ฉ Fark me ๐คฆโโ๏ธ #Google #Search #Sucks #AI #Gemini
@kat / @xuu Recommend you git checkout main && git pull, rebuild and redeploy: make build, and however you deploy. ๐ Lots of fixes (no more stalling) and optimizations to the feed fetcher, smoother cpu usage, better internal metrics.
Just like we don't write emails by hand anymore (See: #a3adoka), we donโt manually write Twts or update our twtxt.txt feeds. Instead, we use modern Twtxt clients that conform to the specifications at Twtxt.dev for a seamless, automated experience. #Twtxt #Twt #UserExperience
Nobody writes emails by hand using RFC 5322 anymore, nor do we manually send them through telnet and SMTP commands. The days of crafting emails in raw format and dialing into servers are long gone. Modern email clients and services handle it all seamlessly in the background, making email easier than ever to send and receiveโwithout needing to understand the protocols or formats behind it! #Email #SMTP #RFC #Automation
Interesting factoid... By inspecting my "followers" list every now and again, I can tell who uses a client like jenny, tt or any other client where fetches are driven by user interactions of invoking the app. What do we call this type of client? Hmmm ๐ค Then I can tell who uses yarnd because they are "seen" more frequently ๐คฃ
A visual flow chart diagram that illustrates how two different but very related concepts can lead to system accidents ๐ 
- asynchronous evolution
- drift into failure
Getting Forked by Microsoft โข Philip Laine ๐ Yet another pretty sad story of a megacorp (Microsoft) being total assholes ๐ข
Just had a freak storm โ๏ธ with lots of horizontal rain โ๏ธ that took out and tripped our internal RCD (again) ๐ฑ Took out our Fibre too (servers were fine, good 'ol UPS). Need to get a UPS for the Fibre box ๐ฆ Haha ๐คฃ
๐ก I had this crazy idea (or is it?) last night while thinking about Twtxt and Yarn.social ๐
There are two things I think that could be really useful additions to the yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
- Voting -- a way to cast, collect a vote on a decision, topic or opinion.
- RSVP -- a way to "rsvp" to a virtual (pr physical) event.
Both would use "plain text" on top of the way we already use Twtxt today and clients would render an appropriate UI/UX.
Am I the only one that's confused by the discussions, and then the voting we had on the whole threading model? ๐ค I'm not even sure what I voted for, but I know it wasn't the one that won haha ๐คฃ (which I'm still very much against for based on an intuition, experience and lots of code writing lately).
AI isnโt a shortcut for thinking. In her guide for skeptics, Hilary Gridley reframes AI as a collaboratorโnot a replacement. Use it like spellcheck for your thoughts. Donโt fear itโiterate with it. Insight improves, speed follows. Full post: https://hils.substack.com/p/the-ai-skeptics-guide-to-ai-collaboration
I asked ChatGPT what it knows about Twtxt ๐ And surprisingly it's rather accurate:
Twtxt is a minimalist, decentralized microblogging format introduced by John Downey in 2016. It uses plain text files served over HTTPโno accounts, databases, or APIs. In 2020, James Mills (@prologic) launched Yarn.social, an extended, federated implementation with user discovery, threads, mentions, and a full web UI. Both share the same .twtxt.txt format but differ in complexity and social features.
Based on a recent study of the brains of mice I estimated the human brain to have 200B cells/neurons and 50,000T connections. We have several orders of magnitude to go before we reach that kind of scale with these fucking stupid Big LLMs ๐คฃ And the best part of all? ๐ง It is estimated that the human brain only consumes the equivalent of 5 Watts of power !!! ๐คฃ๐คฃ๐คฃ
I need to get Peering working again on this branch! That will drag in many Twts Twts I now no longer have ๐ญ
Oh well. I've gone and done it again! This time I've lost 4 months of data because for some reason I've been busy and haven't been taking backups of all the things I should be?! ๐ค Farrrrk ๐คฌ
Timeline Sandbox

