Searching yarn

Twts matching #example
Sort by: Newest, Oldest, Most Relevant
In-reply-to » Every now and then, I think that I have carefully proof-read my message enough times and hit the "Add message" button in tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt's cache. This is rather tidious:

@lyse@lyse.isobeef.org

With multicolored TUIs, I find it usually hard to immediately tell which button is selected if there are just two.

Indeed, I wouldn’t be able to tell in that example, either. movwin works around that by (mostly) assuming that there is no support for colors at all, so there should always be a way to tell which widget has focus, even without colors. That’s why it puts brackets around a button’s label when focused:

The fewer colors you use, the better, I guess. šŸ¤”

⤋ Read More
In-reply-to » Every now and then, I think that I have carefully proof-read my message enough times and hit the "Add message" button in tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt's cache. This is rather tidious:

@lyse@lyse.isobeef.org

Now I’m curious how movwin deals with that. ;-)

Focus handling? I hardly remember, lol. šŸ˜… Did that 6 months ago and haven’t touched it since. Let’s see.

The core main loop gets keyboard/mouse events from curses. At this level, the main loop only knows about exactly one widget, so it passes the event to that widget (whatever that is, doesn’t matter – they all inherit from the Widget base class, it could be a Window, a WindowManager, or an Edit box directly).

The outermost widget is usually a WindowManager. It implements a few hotkeys of its own, like switching to another window. If none of those hotkeys match, it passes the event to the currently focused window.

Same story here: Window implements some hotkeys (like opening the menu bar). If none of those match, then … the magic happens.

Each Window acts as a focus manager. It can descend into its child widget hierarchy and collect all child widgets in a depth-first search. They are collected into a flat list. Each Window then has an attribute _focus_position, which is an index into that list. Pressing Tab or Shift+Tab increases or decreases that index and that allows you to select the next/previous focusable widget in the current window.

Eventually, Window passes the input event to the currently focused widget.

Usually on initialization, the application can ask a Window object to focus a certain widget. The file selection dialog does that, for example, because the ā€œnaturalā€ focus order would be to focus the Edit box at the top of the window first – but that’s not what the user wants, the Table showing the list of files should be focused.

If no widget ever feels responsible for handling a certain input event, then there’s a global unhandled_input callback that the application can provide (same as in urwid).

I think that’s it.

Hm, that’s more complicated than I remembered, but apparently it works fine, because I completely forgot about this. šŸ˜… All I did in the last few months was make new classes that inherit from Widget, like the new Table class or Edit or HexEdit or whatever, and if they want to get input events, then they must implement the methods input_key() or input_mouse().

Does this answer your question? šŸ˜… (I admit that I didn’t exactly understand your scenario, so I just went ahead and rambled about my implementation. šŸ˜…)

⤋ Read More
In-reply-to » First draft of a file selection popup / widget:

@movq@www.uninformativ.de Oh yeah, way better! :-) I didn’t spot the bug, though.

I think I could work with the feature set. I typically don’t need a lot. Until I do. :-D The message tree in tt is an example of that. But tt is also special that it needs something like this in the first place. It’s unusual.

⤋ Read More
In-reply-to » @lyse By the way, which site generator are you using? I kind of miss having code blocks with syntax highlighting and that generic yellow highlighting thing is pretty cool, too.

@lyse@lyse.isobeef.org Ah, I almost thought so (that you wrote it by hand), but then I looked at the source code and saw the TOC and I was like: ā€œNaah, probably not. I would be way too lazy to do that manually.ā€ šŸ˜… And indeed … ha.

Oh god, yeah, that’s a lot of <span>. šŸ¤” Can’t really avoid that, I guess, especially if you want to do syntax highlighting of code blocks.

You wrote your own site generator, didn’t you?

In parts. I write everything in Markdown (it’s online, even: https://movq.de/blog/postings/2026-05-29/0/POSTING-en.md), plus a few Vim shortcuts (to generate thumbnails, for example), and then python-markdown renders it: https://pypi.org/project/Markdown/ This process is wrapped in a shell script, like ā€œre-render every page if the .md file is newer than the .html fileā€ and that’s mostly it. And the Atom feed generator is completely custom. šŸ¤”

⤋ Read More
In-reply-to » @movq I'm very curious...

LIke with almost everything ā€œbig-techā€ has done, it’s not the tech you should not trust, but the companies themselves. For example, accessing and using the models (because let’s face it, they have clusters of much larger and more powerful GPU clusters than we could ever afford to build and own ourselves, at least for now) is fine, but trusting their end-user products/services, not so much.

⤋ Read More
In-reply-to » @movq I'm very curious...

@prologic@twtxt.net Ahh, I see. Okay, I’m with you there. On this high level, I can understand how the thing works.

Maybe my wording isn’t good. šŸ¤” Let’s take a real life example from what we do at work.

There’s this AI chatbot. It gets support requests from users, so the user says something like ā€œI need access to a particular systemā€. This triggers the bot to ā€œrunā€ the instructions stored in a large Markdown file, like ā€œcheck if the user is authorized to do this, then issue the following API requestsā€, and so on. This is essentially like running a little script, except it’s written in natural language (German) and there’s no ā€œscript interpreterā€ but just the AI.

Now, suppose that the AI doesn’t quite do what was intended. There’s some subtle bug. How do you debug this? How do you find out how the AI came to the ā€œconclusionā€ to run step A instead of step B? And how do you find out how exactly you have to change your prompt so this doesn’t happen again next time?

If this was an actual script/program instead of AI, you could repeat the request and attach a debugger or throw in some printf() or whatever. How do you do that kind of thing with AI? How do you pinpoint exactly what the problem was?

(Or is this just a stupid idea? Do we have to give up that way of thinking when using AI? Is the era of debuggability over?)

⤋ Read More
In-reply-to » @movq I'm very curious...

So going back to the understanding of how it generated this, is quite simply the most statistically relevant search space of it’s weights it has been trianed on and it has basically just produced a series of tokens, one after another that are relevant to the input, the next token and so on. It’s a trivial example I know, but it basically pattern matches it’s way through it’s vast search space just producing outputs based on context.

⤋ Read More
In-reply-to » @movq I'm very curious...

@movq@www.uninformativ.de I think your points are pretty clear to me, that’s fine. I’m just seeing if you can perhaps see things a different way maybe?šŸ¤” I would challenge the assertion that you cannot understand how Claude Code generated an output; which I can demonstrate easily with a fairly trivial example by the input:

Write a program in Go that sums a list of numbers from stdin and prints the result.

⤋ Read More
In-reply-to » @bender Well no. Some of us don't. Let me point you at some research on the subject šŸ˜… Some people don't have an inner monologue

Most of the time, I take a very very long time to do anything. If I say, for example, ā€œI’ll build an IRC Web Clientā€, that may not happen for weeks, if not months, until my sub conscience has has time to process everything. It’s like basically a ā€œfeelingā€ of internal readiness. I never talk through it, never actively think about it, it just happens.

⤋ Read More
In-reply-to » @prologic don’t get mad at me, but the long block of text didn’t address any of my questions. šŸ˜œšŸ˜…

@bender@twtxt.net Fine, Let me answer properly and concretely šŸ˜…

Would you want your children not to learn anything, because ā€œthey have AIā€?

No, children still need to learn. That will never change. What they learn however will over time.

Are you OK with your children using the AI for all of their homework?

Yes, frankly I am. Why? Because much of what we teach them in school is utterly pointless.
For example, learning to read Shakespear never taught me anything useful in my life. I regret much of my school years to be honest.
I leanred to read and write, sure. But I learned Math, Science, Computing and how things work on my own by being very curious.

What sense will it make?

That assumes I answered ā€œnoā€, which I did not. So it all makes perfect sense :D

What kind of future would that bring for them?

This assumes I said ā€œYesā€, which I did :D It will be an itneresting future that’s for sure. I don’t think we can just bury our heads in teh sand and pretend it’s all going to go away, It will not. It will make things very interesting for sure, as we’re already starting to see what’s possible and what’s changeing. For example; ordinary people are using these LLM(s) to write their legal suit and defense in courts with varying levels of success.

Even if AI were to become omniscient, what will it be of the human race then?

I’m not convinced it ever will. In fact, I am not convinced we know how to create true intellience at all.

What would we do?

What would be so different from say an Alien invasion from far superious beings?
What would we do that? Band together and defend humanity?

Serve the AI? Maintain the AI?

That assumes that ā€œAIā€ will become intelligent and omniscient, which I don’t believe it ever will.

Would we have found the true meaning of life then?

If the meaning of life is to create our own sub-species liken to ourselves, sure, maybe. But is that even a reality? not sure, I doubt it. We barely understand ourselves at the best of times, let alone how our minds works.

To care for AI, Is that it?

How would this be different to caring for a friend, a family member If we could ever truly reate an actual sentient being with real feelings and intelligenace, is there any reason to worry? Could we not be freinds and have mutual goals and form relationships?

⤋ Read More
In-reply-to » @arne This is interesting. Sorry I missed this, I just found this post of yours and wanted to contribute šŸ˜… Here's something interesting about me... I don't ever talk to myself, like ever. I have no, what they call, "inner monologue". Maybe I'm odd, but my wife asked me this very same question a while back and I said the same, there is never anything in my head except ideas, visuals or sounds, sometimes all at once, but never an inner monologue of "talking to myself".

@prologic@twtxt.net I don’t believe you. For example, you are programming something, and you are planning the steps, or you struggle at certain point. Any train of thought, of any kind, has an addressing. ā€œIf I move this here, what will it happen?ā€. ā€œHmm if we’re to place this logic here, will it do what we need?ā€œ. ā€œIf I were to do this, will it work?ā€ ā€œDamn it, you are so stupid, James, how could you miss that?!!ā€ And so on. šŸ˜… And that’s just a minor thing.

Trust me, you do. We all do. Even the crazy ones.

⤋ Read More

@tftp@tilde.town mentioning in here requires he whole shebang. With jenny, if using vim, there is a key combination:

Nick name completions: Allows you to use ^X ^U to turn verbatim nick names into full twtxt mentions. For example, typing ā€œcathā€ and then pressing ^X ^U will turn ā€œcathā€ into a full mention, like ā€œ@ā€. (This function will read the contents of your ā€œ~/.config/jenny/followā€ file.)

See: https://movq.de/git/jenny/file/vim/README.html

⤋ Read More

I’m pleased to announce that express-twtkpr (my ExpressJS library for hosting, editing, and posting to a twtxt.txt file) continues to crawl towards a full release with another (pre-alpha) update published to NPM. This update includes a whole new plugin system, and even a (little) more documentation. Check it out, if you dare (and use it at your own risk): https://www.npmjs.com/package/express-twtkpr

And speaking of plugins, here’s where the fun’s at: announcing express-twtkpr-core-plugins, a set of 3 plugins for your TwtKpr install: emojiButton, uploadButton, and postToMastodon. Like express-twtkpr, this set of plugins is still in pre-alpha, and lacks documentation, examples, tests, installation flexibility, or polish (so also use them at your own risk). Other than that, they work great: https://www.npmjs.com/package/express-twtkpr-core-plugins

https://itsericwoodward.com/images/bba54e39.png
https://itsericwoodward.com/images/e472ea48.png
https://itsericwoodward.com/images/65b23473.png

Stay tuned for more! 🤘

⤋ Read More

All sorts of .de domains don’t resolve right now. But not all, movq.de for example still works. All on our server and basically all major other sites are cactus. Maybe some DENIC problem? I’m too tired to investigate, but I’m looking forward to tomorrow to read some report on that. :-) Good night.

⤋ Read More
In-reply-to » @lyse Thanks for letting me know. HTML checkers seem happy now. I'm not sure what to do about the images not loading. The photos have three sizes (thumbnail, photo page, and original if you click the img tag on the photo page); can you at least see the smaller two sizes? Maybe I will do some experimental fetches and/or start measuring things on my web server.

@lyse@lyse.isobeef.org Thank you for the suggestions. I will probably do some of that when I have time. For the thumbnails, I’m also thinking about trying the loading=ā€œlazyā€ img attribute. Top on my mind is actually understanding why the big images don’t load. Maybe my VPS’s network connection is saturated, for example. I’ve never needed to worry about such things until now. I’m looking forward to spending some time on it.

⤋ Read More
In-reply-to » I'm happy to report that, earlier today, I published an early version of express-twtkpr: an ExpressJS library that enables hosting (and directly posting to) a twtxt.txt file. It works great (otherwise you wouldn't be able to read this), but it's still in alpha and lacks documentation, examples, tests, installation flexibility, or polish, so please use it at your own risk. Enjoy! https://www.npmjs.com/package/express-twtkpr

@bender@twtxt.net Thanks for the tip-off, fixed!

I hope to have some time this weekend to tease apart my current setup and build a couple of example sites with it (while also writing some docs along the way). But given the rate I’ve been going, it’ll probably be another month. 😢

⤋ Read More

I’m happy to report that, earlier today, I published an early version of express-twtkpr: an ExpressJS library that enables hosting (and directly posting to) a twtxt.txt file. It works great (otherwise you wouldn’t be able to read this), but it’s still in alpha and lacks documentation, examples, tests, installation flexibility, or polish, so please use it at your own risk. Enjoy! https://www.npmjs.com/package/express-twtkpr

⤋ Read More

@rdlmda@rdlmda.me I am reasonably happy with jenny. If I find time for a twtxt project, I would like to make a web page that works as follows: you point it to your own twtxt feed (as a URL parameter), and then it shows you all the feeds referenced by your ā€œ# follow =ā€ lines. So, if I put this up, anyone could use it to view their own feed, with no login required. (Probably a difficult project. For example, I’d want to make sure the backend couldn’t be tricked into helping ddos a web server by trying to fetch lots of ā€œfeedsā€ from it. Anyway, I have too many other projects.)

⤋ Read More

@movq@www.uninformativ.de I noticed that your feed’s last modification timestamp was missing in my database. I cannot tell for certain, but I think it did work before. Turns out, your httpd now sends the Last-Modified with UTC instead of GMT. Current example:

Sat, 03 Jan 2026 06:50:20 UTC

I’m not a fan of this timestamp format at all, but according to the HTTP specification, HTTP-date must always use GMT for a timezone, nothing else: https://httpwg.org/specs/rfc9110.html#http.date

⤋ Read More
In-reply-to » My little toy operating system from last year runs in 16-bit Real Mode (like DOS). Since I’ve recently figured out how to switch to 64-bit Long Mode right after BIOS boot, I now have a little program that performs this switch on my toy OS. It will load and run any x86-64 program, assuming it’s freestanding, a flat binary, and small enough (< 128 KiB code, only uses the first 2 MiB of memory).

Seeing this run on real hardware is so satisfying, even if it’s just a small example. šŸ˜…

https://movq.de/v/ec46b8cf99/netbook.mp4

⤋ Read More

Oh great, I received an e-mail that my SMTP credentials have been exposed. Once again, just another shitty scanner that generates garbage reports from tests it doesn’t understand. Thank you for nothing!

conf := &Config{
    SMTPHost: "smtp.example.com",
    SMTPPort: 587,
    SMTPUser: "user",
    SMTPPass: "hunter2",
    SMTPFrom: "from@example.com",
}

⤋ Read More
In-reply-to » 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!

Ahh that’s because I forgot to call main() at the end of the source file. mu is a bit of a dynamic programming language, mix of Go(ish) and Python(ish).

$ ./bin/mu examples/aoc2025/day1.mu 
Execution failed: undefined variable readline

⤋ Read More

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]

⤋ Read More
In-reply-to » @prologic Bwahahaha! I tried to establish some form of ā€œconventionā€ for commit messages at work (not exactly what you linked to, though), but it’s a lost cause. šŸ˜‚ Nobody is following any of that. Nobody wants to invest time in good commit messages. People just want to get stuff done.

@movq@www.uninformativ.de Same. :ā€˜-( I just don’t get how people do code archeology with all their shit messages and huge commits changing a gazillion of different things. I always try to lead by setting good examples, but nofuckingbody is picking up on that. At all. Even when bringing this up every now and then.

⤋ Read More
In-reply-to » I kind of hate conventional commit messages: https://www.conventionalcommits.org/en/v1.0.0/#summary

This is an example of the kind of garbage release notes from this conventional commit autogenerated crap 🤣

⤋ Read More
In-reply-to » (#jldcvba) @shinyoukai yeah, that's the only reason why I use sub-domains when trying anything federated (I believe Matrix has the same problem), in case things didn't go as planned I can just migrate and take it down.

@bender@twtxt.net actually I think it’s a little more nuance than that because for example with salty chat, we have support for DNS based delegation via SRV records and your identity is associated with your Apex Dom name and of course the keys.

I actually don’t understand why Federation and activity pub is so goddamn hard to migrate from one instance to another 🧐

⤋ Read More
In-reply-to » I'm contemplating the idea of switching my activity pub instance from Gootosocial to a Pleroma one. While GTS is kinda cute (lightweight and easy to manage) of a software, the inability to fetch/scroll through people's past toots when visiting a profile or having access to a federated timeline and a proper search functionality ...etc felt like handicap for the past N months.

@bender@twtxt.net yeah, I’ve been reading through the documentation last night and it felt overwhelming for a minute… +1 point goes to GTS’s docs. but hey, I’ll be taking the easy route: podman-compose up -d they provide both a container image and an example compose file in a separate git repo but I’m wondering why that is not mentioned anywhere in the docs, (unless it is and I haven’t seen it yet)

⤋ Read More
In-reply-to » Which actively maintained Yarn/twtxt clients are there at the moment? Client authors raise your hands! šŸ™‹

@lyse@lyse.isobeef.org Damn. That was stupid of me. I should have posted examples using 2026-03-01 as cutoff date. šŸ˜‚

In my actual test suite, everything uses 2027-01-01 and then I have this, hoping that that’s good enough. 🄓

def test_rollover():
    d = jenny.HASHV2_CUTOFF_DATE
    assert len(jenny.make_twt_hash(URL, d - timedelta(days=7), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=3), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=2), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d - timedelta(seconds=1), TEXT)) == 7
    assert len(jenny.make_twt_hash(URL, d, TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=1), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=2), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(seconds=3), TEXT)) == 12
    assert len(jenny.make_twt_hash(URL, d + timedelta(days=7), TEXT)) == 12

(In other words, I don’t care as long as it’s before 2027-01-01. šŸ˜šŸ˜…)

⤋ Read More

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?! 🤬

⤋ Read More

All my newly added test cases failed, that movq thankfully provided in https://git.mills.io/yarnsocial/twtxt.dev/pulls/28#issuecomment-20801 for the draft of the twt hash v2 extension. The first error was easy to see in the diff. The hashes were way too long. You’ve already guessed it, I had cut the hash from the twelfth character towards the end instead of taking the first twelve characters: hash[12:] instead of hash[:12].

After fixing this rookie mistake, the tests still all failed. Hmmm. Did I still cut the wrong twelve characters? :-? I even checked the Go reference implementation in the document itself. But it read basically the same as mine. Strange, what the heck is going on here?

Turns out that my vim replacements to transform the Python code into Go code butchered all the URLs. ;-) The order of operations matters. I first replaced the equals with colons for the subtest struct fields and then wanted to transform the RFC 3339 timestamp strings to time.Date(…) calls. So, I replaced the colons in the time with commas and spaces. Hence, my URLs then also all read https, //example.com/twtxt.txt.

But that was it. All test green. \o/

⤋ Read More
In-reply-to » There are no really good GUI toolkits for Linux, are there?

FTR, I see one (two) issues with PyQt6, sadly:

  1. The PyQt6 docs appear to be mostly auto-generated from the C++ docs. And they contain many errors or broken examples (due to the auto-conversion). I found this relatively unpleasent to work with.
  2. (Until Python finally gets rid of the Global Interpreter Lock properly, it’s not really suited for GUI programs anyway – in my opinion. You can’t offload anything to a second thread, because the whole program is still single-threaded. This would have made my fractal rendering program impossible, for example.)

⤋ Read More
In-reply-to » Just a small update, on my birthday (on the 5th), I accidentally deleted the main page, of my website, so I'm using that as an opportunity, to try something new, at https://thecanine.smol.pub or gemini://thecanine.smol.pub - depending on your preferred protocol.

@bender@twtxt.net to work through both https and gemini, the site is not written in HTML, but in Gemtext, automatically converted to HTML, when needed. Gemtext is nicely explained for example here: https://garden.bouncepaw.com/hypha/gemtext . In short, it is so limited, no line can be more than one thing, so no links in a list are possible, othar than doing it through something like this primitive workaround.

⤋ Read More
In-reply-to » @bender Thanks for this illustration, it completely ā€œmisunderstoodā€ everything I wrote and confidently spat out garbage. šŸ‘Œ

@prologic@twtxt.net Let’s go through it one by one. Here’s a wall of text that took me over 1.5 hours to write.

The criticism of AI as untrustworthy is a problem of misapplication, not capability.

This section says AI should not be treated as an authority. This is actually just what I said, except the AI phrased/framed it like it was a counter-argument.

The AI also said that users must develop ā€œAI literacyā€, again phrasing/framing it like a counter-argument. Well, that is also just what I said. I said you should treat AI output like a random blog and you should verify the sources, yadda yadda. That is ā€œAI literacyā€, isn’t it?

My text went one step further, though: I said that when you take this requirement of ā€œAI literacyā€ into account, you basically end up with a fancy search engine, with extra overhead that costs time. The AI missed/ignored this in its reply.

Okay, so, the AI also said that you should use AI tools just for drafting and brainstorming. Granted, a very rough draft of something will probably be doable. But then you have to diligently verify every little detail of this draft – okay, fine, a draft is a draft, it’s fine if it contains errors. The thing is, though, that you really must do this verification. And I claim that many people will not do it, because AI outputs look sooooo convincing, they don’t feel like a draft that needs editing.

Can you, as an expert, still use an AI draft as a basis/foundation? Yeah, probably. But here’s the kicker: You did not create that draft. You were not involved in the ā€œthought processā€ behind it. When you, a human being, make a draft, you often think something like: ā€œOkay, I want to draw a picture of a landscape and there’s going to be a little house, but for now, I’ll just put in a rough sketch of the house and add the details later.ā€ You are aware of what you left out. When the AI did the draft, you are not aware of what’s missing – even more so when every AI output already looks like a final product. For me, personally, this makes it much harder and slower to verify such a draft, and I mentioned this in my text.

Skill Erosion vs. Skill Evolution

You, @prologic@twtxt.net, also mentioned this in your car tyre example.

In my text, I gave two analogies: The gym analogy and the Google Translate analogy. Your car tyre example falls in the same category, but Gemini’s calculator example is different (and, again, gaslight-y, see below).

What I meant in my text: A person wants to be a programmer. To me, a programmer is a person who writes code, understands code, maintains code, writes documentation, and so on. In your example, a person who changes a car tyre would be a mechanic. Now, if you use AI to write the code and documentation for you, are you still a programmer? If you have no understanding of said code, are you a programmer? A person who does not know how to change a car tyre, is that still a mechanic?

No, you’re something else. You should not be hired as a programmer or a mechanic.

Yes, that is ā€œskill evolutionā€ – which is pretty much my point! But the AI framed it like a counter-argument. It didn’t understand my text.

(But what if that’s our future? What if all programming will look like that in some years? I claim: It’s not possible. If you don’t know how to program, then you don’t know how to read/understand code written by an AI. You are something else, but you’re not a programmer. It might be valid to be something else – but that wasn’t my point, my point was that you’re not a bloody programmer.)

Gemini’s calculator example is garbage, I think. Crunching numbers and doing mathematics (i.e., ā€œcomplex problem-solvingā€) are two different things. Just because you now have a calculator, doesn’t mean it’ll free you up to do mathematical proofs or whatever.

What would have worked is this: Let’s say you’re an accountant and you sum up spendings. Without a calculator, this takes a lot of time and is error prone. But when you have one, you can work faster. But once again, there’s a little gaslight-y detail: A calculator is correct. Yes, it could have ā€œbugsā€ (hello Intel FDIV), but its design actually properly calculates numbers. AI, on the other hand, does not understand a thing (our current AI, that is), it’s just a statistical model. So, this modified example (ā€œaccountant with a calculatorā€) would actually have to be phrased like this: Suppose there’s an accountant and you give her a magic box that spits out the correct result in, what, I don’t know, 70-90% of the time. The accountant couldn’t rely on this box now, could she? She’d either have to double-check everything or accept possibly wrong results. And that is how I feel like when I work with AI tools.

Gemini has no idea that its calculator example doesn’t make sense. It just spits out some generic ā€œargumentā€ that it picked up on some website.

3. The Technical and Legal Perspective (Scraping and Copyright)

The AI makes two points here. The first one, I might actually agree with (ā€œbad bot behavior is not the fault of AI itselfā€).

The second point is, once again, gaslighting, because it is phrased/framed like a counter-argument. It implies that I said something which I didn’t. Like the AI, I said that you would have to adjust the copyright law! At the same time, the AI answer didn’t even question whether it’s okay to break the current law or not. It just said ā€œlol yeah, change the lawsā€. (I wonder in what way the laws would have to be changed in the AI’s ā€œopinionā€, because some of these changes could kill some business opportunities – or the laws would have to have special AI clauses that only benefit the AI techbros. But I digress, that wasn’t part of Gemini’s answer.)

tl;dr

Except for one point, I don’t accept any of Gemini’s ā€œcriticismā€. It didn’t pick up on lots of details, ignored arguments, and I can just instinctively tell that this thing does not understand anything it wrote (which is correct, it’s just a statistical model).

And it framed everything like a counter-argument, while actually repeating what I said. That’s gaslighting: When Alice says ā€œthe sky is blueā€ and Bob replies with ā€œwhy do you say the sky is purple?!ā€

But it sure looks convincing, doesn’t it?

Never again

This took so much of my time. I won’t do this again. šŸ˜‚

⤋ Read More
In-reply-to » @bender Thanks for this illustration, it completely ā€œmisunderstoodā€ everything I wrote and confidently spat out garbage. šŸ‘Œ

You do raise very good points though, but I don’t think any of this is particularly new because there are many other examples of technology and evolution of change over time where people have forgotten certain skills like for example, changing a car tyre

⤋ Read More

Java’s Swing is allegedly in ā€œmaintenance modeā€, so I doubt it’s a good idea to use it for new programs. For example, I very much doubt that it will ever support Wayland.

The replacement is supposed to be JavaFX, but that’s not included in JREs – anymore! It used to be, now it’s not, even though it’s well over 15 years old now.

This whole thing (ā€œJava GUIsā€) appears to have stagnated a lot. Probably because everything is web stuff these days …

https://www.oracle.com/java/technologies/javafx/faq-javafx.html#6

⤋ Read More
In-reply-to » DCF77, our time signal radio station, is a great public service. I really love that. It’s just a signal that anybody can pick up, no subscription, no tracking, no nothing. Much like GPS/GNSS. šŸ’š

@bender@twtxt.net I guess most clocks don’t support that. šŸ˜… My wrist watch can do it, you can select it in the menu:

https://movq.de/v/ccb4ffcbc5/s.png

In general, different transmitter means different frequency and different encoding, for example these two:

⤋ Read More

My open letter, to the European Commission digital markets act team:

Hello,

I am joining other developers, concerned about Googles new plan, to approve every app and effectively destroy most of the competing 3rd party stores this way. The biggest one of these alternative stores, most known for their focus on user and developer privacy, already states, this would make it impossible for them to operate: https://f-droid.org/cs/2025/09/29/google-developer-registration-decree.html
Even communities like the XDA forum, where new developers are often introduced to the world of Android development, would likely be strongly impacted, as making, publishing and installing Android apps is made less accessible.

I am not just writing on their behalf, I run a small website myself (https://thecanine.ueuo.com/), that both provides legal modifications, for some android apps - for example adding an amoled dark theme, to the most popular XMPP chat client for Android, or increasing one of Androids keyboard apps height. This all comes after Googles previous changes to the Android operating system, that prevent users from installing old apps (old to Google, can mean only a couple of months, without an update - https://developer.android.com/google/play/requirements/target-sdk and the target version gets increased every year). I rely on apps developed by a single developer, even for things like making the pixel art presented on my website and sideloading as a way to make these apps work, before developers can catch up to Google’s new requirements - if Google is allowed to slowly kill these options, us digital artists will soon lose the tools we need to create digital art.

⤋ Read More
In-reply-to » Hello again everyone! A little update on my twtxt client.

@zvava@twtxt.net @bender@twtxt.net At first I added it without thinking when planning the possible fields based on other UIs I was researching.

I was about to discard it but after thinking about it a bit I noticed that the services allowing to have a separated nick and display_name could unlock some good uses.

For example some added context or at-a-glance information like pronouns or statuses (like Artist [Accepting commissions] or App Name (v2.5)) while other used a more readable version of the nick (blog.domain.com became Person Name's Blog).

Of course it is absolutely optional and it can be safely ignored, but with my vision of being able to build more that a pure twtxt clients, giving it a first-class support just like the other known fields felt right to me.

⤋ Read More

All good things come to an end, I guess.

I have an Epson printer (AcuLaser C1100) and an Epson scanner (Perfection V10), both of which I bought about 20 years ago. The hardware still works perfectly fine.

Until recently, Epson still provided Linux drivers for them. That is pretty cool! I noticed today that they have relaunched their driver website – and now I can’t find any Linux drivers for that hardware anymore. Just doesn’t list it (it does list some drivers for Windows 7, for example).

I mean, okay, we’re talking about 20 years here. That is a very long time, much more than I expected. But if it still works, why not keep using it?

Some years ago, I started archiving these drivers locally, because I anticipated that they might vanish at some point. So I can still use my hardware for now (even if I had to reinstall my PC for some reason). It might get hacky at some point in the future, though.

This once more underlines the importance of FOSS drivers for your hardware. I sadly didn’t pay attention to that 20 years ago.

⤋ Read More
In-reply-to » @zvava Mixing both addressing schemes combines the worst of both worlds in my opinion. Please don't do that.

@lyse@lyse.isobeef.org i would like to ditch hash addressing but as was pointed out it would be a pain in the ass to get clients currently working off of hashv1 to suddenly switch to location-based addressing instead of just hashv2 with the option to eventually phase it out — unless we can rally together all active client developers to decide on a location-based addressing specification (i still think my original suggestion of #<https://example.com/tw.txt#yyyy-mm-ddThh:mm:ssZ> is foolproof)

⤋ Read More
In-reply-to » is the first url metadata field unequivocally treated as the canon feed url when calculating hashes, or are they ignored if they're not at least proper urls? do you just tolerate it if they're impersonating someone else's feed, or pointing to something that isn't even a feed at all?

@zvava@twtxt.net

(#abcdefghijkl https://example.com/tw.txt#:~:text=2025-10-01T10:28:00Z), because it can be simply hacked in to clients currently on hashv1 and provides an off-ramp to location-based addressing

I like that property (an off-ramp to location-based addressing), so I think I could live with that approach. āœ…

(I’m not sure why we’re using text fragments, though. Wouldn’t that link to the first occurence of 2025-10-01T10:28:00Z? That’s not necessarily correct. And, to be proper URLs that Firefox and Chromium understand, it would also need to be written as 2025%2D10%2D01T10:28:00Z. The dash carries meaning, sadly. I think all this just creates needless complication. How about we just go with https://example.com/tw.txt#2025-10-01T10:28:00Z?)

⤋ Read More
In-reply-to » is the first url metadata field unequivocally treated as the canon feed url when calculating hashes, or are they ignored if they're not at least proper urls? do you just tolerate it if they're impersonating someone else's feed, or pointing to something that isn't even a feed at all?

@alexonit@twtxt.alessandrocutolo.it prologic has me sold on the idea of hashv2 being served alongside a text fragment, eg. (#abcdefghijkl https://example.com/tw.txt#:~:text=2025-10-01T10:28:00Z), because it can be simply hacked in to clients currently on hashv1 and provides an off-ramp to location-based addressing (though i still think the format should be changed to smth like #<abc... http://example.com/...> so it’s cleaner once we finally drop hashes)

⤋ Read More
In-reply-to » https://zsblog.mills.io/ for anyone interested. I think I still have some small tweaking to do befor eI use this for realz.

@prologic@twtxt.net need to work on the CSS. For example, the tags are too big, the code blocks (and the inline ones) are too small, the single posts have no date (intended?), and so on. It’s an alpha start!

⤋ Read More
In-reply-to » TNO Threading (draft):
Each origin feed numbers new threads (tno:N). Replies carry both (tno:N) and (ofeed:<origin-url>). Thread identity = (ofeed, tno).

Example:

Alice starts thread href=ā€https://yarn.girlonthemoon.xyz/search?q=%2342:ā€>#42:**

2025-09-25T12:00:00Z (tno:42) Launching storage design review.

Bob replies:

2025-09-25T12:05:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) I think compaction stalls under load.

Carol replies to Bob:

2025-09-25T12:08:00Z (tno:42) (ofeed:https://alice.example/twtxt.txt
) Token bucket sounds good.

⤋ Read More
In-reply-to » Here is just a small list of thingsā„¢ that I'm aware will break, some quite badly, others in minor ways:

I would personally rather see something like this:

2025-09-25T22:41:19+10:00	Hello World
2025-09-25T22:41:19+10:00	(#kexv5vq https://example.com/twtxt.html#:~:text=2025-09-25T22:41:19%2B10:00) Hey!

Preserving both content-based addressing as well as location-based addressing and text fragment linking.

⤋ Read More