ZeroKeyUSB โ Your passwords, offline, in your pocket -- Anyone know much about this nifty look'n device? ๐ค
Problems are Solved by Method\" ๐ฆ๐บ๐จโ๐ป๐จโ๐ฆฏ๐นโ ๐โฏ ๐จโ๐ฉโ๐งโ๐ง๐ฅ -- James Mills (operator of twtxt.net / creator of Yarn.social ๐งถ)
(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 ๐ฑ
I'm off for a week on a week-long trip up north (Australia), to a place called Yeppoon. I'll be sporactily around on Yarn/Twtxt, but probably having too much relaxing fun with my family ๐ Cya's in a week or so ๐๏ธ
โ ๏ธ For anyone that signs up on Yarn.social's multi-user twtd multi-tenant platform I'm runnign on twtpub.com -- Be warned. I will delete your account if you create it for the soles purposes of link squatting, spam, link harvesting, seo marketing, or any other useless fucktarrd crap.
To the spammers and would-be assholes of the world: You have been wanred. Don't abuse my generosity.
it's all I ask
@movq Ahh, no you can. Much like what we've built here with Twtxt / Yarn. I'm building a spec, clients can implement the spec, or you can ya know, just curl and git your way through. I'll link the spec soonโข, just need to keep refining and testing and make sure this actually works properly ๐
@movq What if I told you there were in fact zero account(s) at all? And that you signed into your own instance or a multi-user instance with your own SSH key? ๐ Hmmm? ๐ง
@smmbear Hey ๐ Welcome to Yarn.social / Twtxt ๐ Just in case you are not ware a) spam is not really tolerated by this community and b) doesn't work anyway, you'll just be ignored, and there are exactly zero ways to promote spam or advertise on this social system -- on purpose.
@klaxzy That set is the set of users that actually interact with one another. The "Twtxt" feed set is a bit larger, but mostly just "walls of posts" and little to no inteaction. So yeah, the real community is quite small sadly ๐
@arg You actually can, but we highly discourage it and I haven't really built "Edit" / "Delete" functionality in the Twtxt App that I know you're using ๐ Twtxt being purely decentralised, meaning that there are absolutely zero decentralised, with the exception of the twtpub.com service you're using to reduce as much friction as possible for newcomers to try things, makes supporting threads a bit of a controversial topic ๐ -- In the end we are sticking with the Hash v2 extension, making threads use content addressing, so even if you did delete/edit a Twt, you have to be carefuly it hasn't already been replied to in the ecosystem ๐คฃ
@murad Welcome to Yarn.social / Twtxt ๐ฅณ You might want to fiddle a bit with your settings, maybe a nice avatar, description, maybe a few links, etc ๐
What's interesting here... Which is the interesting thing about Mu is the dual runtime. So the above solution for Euler Problem 9 finds the solution in ~429ms with the Go VM and ~327ms natively compiled to darwin/arm64. Not bad for a language I haven't really done any optimization work on yet (correctness first obviously).
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() but yes, however you cannot currently add it or delete post via the app as I haven't really built that feature at the moment you technically can do it, but you do run into some challenges with breaking threads if you've already published something and then go back and edit it so we generally advise not to do that too much if you can help it
@movq No I haven't :/
Just out of curiosity, have you ever ran this on real hardware? ๐
Only QEMU. Would you like to help test it on real hardware? ๐ I'm not sure I have anything worth testing it on!
So... my little experimental Mu (ยต) OS is now ~8.7k of Mu and ~2k of Assembly, which makes this about an ~80/20 split. I've managed to achieve most of the goals I had set out, by ensuring a tiny Nucleus of only ~2k Assembly and all Policy, Services and Userland written entirely in Mu (a language I also deisnged and created, which still has no support for floats LOL)
I just taught the scc SLOC tool I use how to detect and recognize the Mu programming language. So it's actually a bit worse than your estimate. It's more like ~60/30 at the moment:
>>> mu = 1445
>>> asm = 2365
>>> T = mu + asm
>>> mu / T * 100
37.9265091863517
>>> asm / T * 100
62.07349081364829 Dunno if anyone will find this interesting... But some ~6 months or so ago I experimented briefly with creating a whole bootloader + kernel + userland -- Basically an entire OS in the Mu programming language (which as you know I also designed and created) -- 6 months later I've worked on it some more after spending the last week working on improvements to Mu itself, which is now able to compile itself with its own Mu implemented compiler and now have an os/arch backend called muos/amd64 that boots into a running shell, with a tiny little vfs, UNIX-like semantics, syscalls, read/write, etc. It works pretty nicely, and aside from a small Assembly "nucleus", most of the Kernel and Userspace is written in Mu.
@eldersnake Login to https://feeds.twtxt.net/ with your Pod's account. Re-create whatever you like. In the end I had to start over, there was too much mess. As you can no doubt imagine, the reason for revamping the feeds service was to thwart SPAM and Junk.
@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
@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.
@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.
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? ๐ค
After many months of hardโข work, I've finally been able to get Mu (ยต) lang to a point where the duplication of machine code / assembly between the ARM64/AMD64 and Mach-O and ELF formats are not all eliminated. This now means that writing a new backend target os/arch for Mu is now relatively simple to do, or far less duplicated work/effort.
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.
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.
twtpub.com is just the default instance tho โ it's a multi-tenant twtd, AGPLv3. Run your own and I'll list it in the app's picker so folks choose where to land ๐ค keeps it decentralised + spreads the load. Docs โ https://git.mills.io/yarnsocial/twtd
Linux 0.11 rewritten in idiomatic Rust, boots in QEMU | Hacker News Fark'n hell, this is some ~50k SLOC of Rust code compared to the original ~8k SLOC of C of the original this was based off of. No doubt this was "vibe coded" for sure, there is no way a human can write 50k SLOC, not in a reasonable timeframe anyway ๐
@balloonfu-sen Such tilde(s), etc, could in theory just run a twtd instance per user, or if I was convinced enough to make twtd also multi-user capable (optionally) that would also work. But many ~tilde(s) barely implement the Twtxt specs we continue to build and improve (albiet slowly and carefully).
Ahh yes, you really must fix your nick haha ๐คฃ
Hmmm are there really no decent Wayland (desktop) compatible image viewers that don't drag in Mesa and all it's hundreds of dependences or GCC and libgcc and it's multi-hour long build time or Rust? geez
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".
๐ Looking for other interested folks to continue to evolve the development of Salty.im ๐ I've been hardโข at work on the v2 branch and @doesnm.p.psf.lt has been incredibly helpful so far. Be great ot have a few more folks to join us, some of the v2 highlights include:
- Double Ratchet by default.
- Group Chat (sender/client fan-out for now)
- Much better TUI with background agent.
- Mobile App coming soonโข (iOS in progress, Android next, same codebase)
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 ๐ค
Have finally put together the beginnings of a site for Mu (ยต) https://mu-lang.dev ๐ค #mu #mu-lang
yes, yes that's right. Mu (ยต) now has a built-in LSP server for fans of VS Code / VSCodium ๐
You just go install ./cmd/mu-lsp/... and install the VS extension and hey presto ๐ฅณ You get outlines of any Mu source, Find References and Go to Definition!
Btw @movq you've inspired me to try and have a good 'ol crack at writing a bootloader, stage1 and customer microkernel (ยตKernel) that will eventually load up a Mu (ยต) program and run it! ๐คฃ I will teach Mu (ยต) to have a ./bin/mu -B -o ... -p muos/amd64 ... target.
Took me nearly all week (in my spare time), but Mu (ยต) finally officially support linux/amd64 ๐ฅณ I completely refactored the native code backend and borrowed a lot of the structure from another project called wazero (the zero dependency Go WASM runtime/compiler). This is amazing stuff because now Mu (ยต) runs in more places natively, as well as running everywhere Go runs via the bytecode VM interpreter ๐ค
This week, Mu (ยต) get s bit more serious and starts to refactor the native backend (a lot). Soonโข we will support darwin/arm64, linux/arm64 and linux/amd64 (Yes, other forms of BSD will come!) -- Mu (ยต) also last week grew concurrency support too! ๐คฃ
Mu (ยต) is coming along really nicely ๐คฃ Few things left to do (in order):
- Finish the concurrency support.
- Add support for sockets
- Add support for
linux/amd64 - Rewrite the heap allocator
- Rewrite Mu (ยต) in well umm Mu (ยต) ๐
Here's a screenshot showing off the builtin help(): 
Mu (ยต) is now getting much closer to where I want it to be, it now has:
- A
processstdlib module (very basic, but it works) - An
ffistdob module that supportsdlopen/dlsymand calling C functions with a nice mu-esque wrapperffi.fn(...) - A
sqlitestdlib module (also very basic) that shows off the FFI capabilities
๐
Opinion / Question time...
Do you think Mu (ยต)'s native compiler and therefore emitted machine code "runtime" (which obviously adds a bit of weight to the resulting binary, and runtime overheads) needs to support "runtime stack traces", or would it be enough to only support that in the bytecode VM interpreter for debuggability / quick feedback loops and instead just rely on flat (no stacktraces) errors in natively built compiled executables?
So in effect:
Stack Traces:
- Bytecode VM Interpreter: โ
- Native Code Executables: โ
Nice! ๐ Here are the startup latencies for the simplest Mu (ยต) program. println("Hello World"):
- Interpreter: ~5ms
- Native Code: ~1.5ms
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
mu (ยต) now has builtin code formatting and linting tools, making ยต far more useful and useable as a general purpose programming language. Mu now includes:
- An interpreter for quick "scriptinog"
- A native code compiler for building native executables (Darwin / macOS only for now)
- A builtin set of developer tools, currently: fmt (-fmt), check (-check) and test (-test).
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 ๐คฆโโ๏ธ
Hmmm I need to figure out a way to reduce the no. of lines of code / complexity of the ARM64 native code emitter for mu (ยต). It's insane really, it's a whopping ~6k SLOC, the next biggest source file is the compiler at only ~800 SLOC ๐ค
I cleaned up all my of AoC (Advent of Code) 2025 solutions, refactored many of the utilities I had to write as reusable libraries, re-tested Day 1 (but nothing else). here it is if you're curious! This is written in mu, my own language I built as a self-hosted minimal compiler/vm with very few types and builtins.
I finished all 12 days of Advent of Code 2025! #AdventOfCode https://adventofcode.com โ did it in my own language, mu (Go/Python-ish, dynamic, int/bool/string, no floats/bitwise). Found a VM bug, fixed it, and the self-hosted mu compiler/VM (written in mu, host in Go) carried me through. ๐ฅณ
Ooops, I've run into a bug or limitation with mu for Day 9 ๐ค
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). ๐คฃ
Did I mention mu only supports ints? ๐ค I'm not sure if I'll need flots for this year's AoC? ๐ค
I'm having to write my own functions like this in mu just to solve AoC puzzles :D
fn pow10(k) {
p := 1
i := 0
while i < k {
p = p * 10
i = i + 1
}
return p
} 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 just completed "Secret Entrance" - Day 1 - Advent of Code 2025 #AdventOfCode https://adventofcode.com/2025/day/1 --- However I did it in my own toy programming language called mu, which I had to build first ๐คฃ
Come back from my trip, run my AoC 2025 Day 1 solution in my own language (mu) and find it didn't run correctly ๐คฃ Ooops!
$ ./bin/mu examples/aoc2025/day1.mu
closure[0x140001544e0] Thinking about doing Advent of Code in my own tiny language mu this year.
mu is:
- Dynamically typed
- Lexically scoped with closures
- Has a Go-like curly-brace syntax
- Built around lists, maps, and first-class functions
Key syntax:
- Functions use
fnand braces:
fn add(a, b) {
return a + b
}
- Variables use
:=for declaration and=for assignment:
x := 10
x = x + 1
- Control flow includes
if/elseandwhile:
if x > 5 {
println("big")
} else {
println("small")
}
while x < 10 {
x = x + 1
}
- Lists and maps:
nums := [1, 2, 3]
nums[1] = 42
ages := {"alice": 30, "bob": 25}
ages["bob"] = ages["bob"] + 1
Supported types:
intboolstringlistmapfnnil
mu feels like a tiny little Go-ish, Python-ish language โ curious to see how far I can get with it for Advent of Code this year. ๐
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 ! ๐
๐ค ๐ญ ๐ง What if, What if we built our own self-hosted / small-web / community-built/run Internet on top of the Internet using Wireguard as the underlying tech? What if we ran our own Root DNS servers? What if we set a zero tolerance policy on bots, spammers and other kind of abuse that should never have existed in the first place. Hmmmm
Weekend! Whooo ๐คฃ Having a few too many glassses of ๐ท listening to music on Youtube and playing Chess which I haven't been playing much lately ๐ข
Been mucking around with designing my own camper (floor plan). 
Responded to a bunch of Twtxt open issues across multiple repositories today ๐
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).
@bender I noticed that although the Discover view (and your own Timeline) is much improved with a MaxAgeDays configuration at the pod level, that now some profiles are rather empty. This is only because well, they're a bit "inactive" so to speak ๐ฃ๏ธ Not sure what to do about this at the moment... Open to ideas? ๐ก
Timeline Sandbox