Searching txt.sour.is

Twts matching #ToS
Sort by: Newest, Oldest, Most Relevant

Data protection, @dce@hashnix.club! :-D

This revealed another bug in my client that I still need to fix at some point. Inserting an empty set of messages failed with an SQL logic error. Whoops. I didn’t think about that corner case.

⤋ Read More
↳ In-reply-to » Advertise in ChatGPT | Hacker News Seriously?! 😳 wut da actual fuq?! 😱

@movq@www.uninformativ.de 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.

⤋ Read More
↳ In-reply-to » Advertise in ChatGPT | Hacker News Seriously?! 😳 wut da actual fuq?! 😱

@prologic@twtxt.net Our company is paying a shitload of money for all these (different) AI tools … I’m probably not allowed to tell you the exact number, but it is a lot. The only other way would be to lay off employees, so we can pay even more for AI. (Needless to say, that would be the worst possible move.)

For a private person, $20 a month is also pretty expensive, isn’t it? And then assume that you maybe need more than one AI tool. You’re quickly up to $50 a month or much more. This isn’t something that I, as a private person, will ever be willing to spend for this kind of stuff.

ā€œAIā€ is just expensive as fuck. On every level. They will have to (ab)use every possible way to squeeze more money out of it, and that includes ads and what not.

⤋ Read More
↳ In-reply-to » Hello Twtd!

@prologic@twtxt.net Sorry I haven’t seen your question before! and to answer your question, no, it wasn’t hard at all. it’s a simple go build …etc. as instructed + scp twtd to remote + made a systemd service for it to (re)start automatically under a dedicated twtd user for lols. + poked at the Caddyfile to reverse-proxy a couple of paths and called it a day.

Too much info?

⤋ Read More
↳ In-reply-to » I’m seeing some slowdowns in Vim lately. Must have something to do with syntax highlighting or indentation rules or something: When I hit Enter to go to the next line, it sometimes freezes for like 100 ms. It’s pretty annoying.

@movq@www.uninformativ.de Similar to my Go IDE at work. GoLand hangs so often in this giant code base. :-D (But it could also be one or the other snake oil that’s forcefully installed and fucks with me every day.)

⤋ Read More

@david@daiwei.me Hahaha! The thing is, it doesn’t taste as good in summer as in winter for some unknown reason. Two or three decades ago I asked my grandma to bake some of her amazing gingerbread in summer. But she always refused, claiming that this only really works in winter. Of course, I didn’t believe that. Finally, after years of begging and pleading, she finally made a tray. And to my surprise, she was right. It wasn’t bad, no, no, not at all. It was really yummy. But the gingerbread in winter was just better. :-/

Maybe I should give it a shot myself. Perhaps she slightly changed the recipe on purpose. So that I will never break the tradition of seasonal food again. :-P It worked, at least I never asked her to bake gingerbread in summer again. :-D

⤋ Read More
↳ In-reply-to » Hmm …

@movq@www.uninformativ.de Good question. Tarballs are probably not needed, but might be convenient for people who don’t want to or can use a version control system. Not sure if there are non-techies who use your software. Tarballs for branches are overkill, though, I agree.

Looking at this more closely: As for the feeds, how about filenames ā€œtags.atomā€ and ā€œcommits.atomā€? Unless, of course, they were already named like that before.

For the tags feed it would be cool to include the actual changelog entries to be more useful if somebody takes this approach to get notified of new versions. But that would mean you have to duplicate the changelog entry into the annotated tag. And then you can’t fix changelog typos in the feed anymore. Alternatively, the feed generation would need to extract the section from the the CHANGES file. That has the benefit of automatically providing changelogs for past versions in the feed.

⤋ Read More

I finally built a prototype of a marking gauge with a cutter wheel out of some scraps.

https://lyse.isobeef.org/tmp/streichmassprototyp-mit-messerrad/

It had been a long time in coming, I bought some replacement cutting wheels three years ago for exactly that purpose. I also found out that I need more M3 countersink bolts for future marking gauges that I want to make (maybe two or three more). Luckily, I had exactly one. I thought I got way more than that, but M3 is very, very scarce in my collection. My M3 bolt was barely long enough to attach the cutting wheel to the bar. But it’s okay for the prototype.

I was pleasantly surprised that I managed to drill the 2.5mm diameter hole almost perfectly in center in the 8mm diameter aluminium round bar. Center finder, drill press and vise with a vertical prism for the win!

I knew upfront that the M5 steel bolt to lock the bar in place definitely needs to be replaced with a brass or aluminium one (maybe with a knurled head). Otherwise, it cuts into the aluminium bar and leaves ugly marks. These burrs might even scratch the workpiece. But, of course, I don’t have any brass on hand either. Alternatively, I swap out the aluminium bar for a steel or even stainless steel one. Stainless might be tricky to precisely drill and tap, though.

I already learned a few things by making this prototype. The final wooden fence can be even a bit bigger. This round thing behind is also too short, I’d like it to be a tad longer and thicker. The final one will be made from hardwood, not spruce. Other than that, it’s great and already more practical than my store-bought marking gauge with its round fence. This only causes the tool to roll around on the workbench. Or even roll off. Stupid design.

⤋ Read More

Hmm …

My project pages have this ā€œDownloadsā€ section and I offer tarballs for each release:

https://movq.de/git/jenny/#downloads

I added this many years ago because an OpenBSD dev asked for it (but the project in question didn’t end up in their ports after all).

What are your thoughts on this? Is it necessary to offer tarballs?

I noticed that some distributions have already moved away from using tarballs and instead always clone from Git. šŸ¤”

⤋ Read More
↳ In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

@prologic@twtxt.net Oh, yes, just for clarity: This wasn’t a ā€œpro GitHubā€ argument. šŸ˜… I won’t go back there (or to another ā€œforgeā€).

I think we’re totally on the same page: Decentralized Git hosting is good, but we haven’t solved the ā€œcollaborationā€ part yet. Or rather: We have to modernize it. The tools are already there, but (many) people don’t want to use them and think they’re clunky.

⤋ Read More
↳ In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

And @lyse@lyse.isobeef.org 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.

⤋ Read More
↳ In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

@movq@www.uninformativ.de So I see it slightly differently… Over the years I have recieved great contributions from the likes of yourself and @lyse@lyse.isobeef.org and the many forms of @bender@twtxt.net 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.

⤋ Read More
↳ In-reply-to » @lyse Thanks. šŸ˜… Yeah, I already found it slightly annoying myself. Let’s see how the bots respond to the new situation. šŸ¤”

@lyse@lyse.isobeef.org Oh, I’m sure they’ll keep hammering dead URLs for many years to come. These crawlers are 100% brain dead. And they don’t even need to be smarter, because they still grab valuable stuff left and right.

⤋ Read More
↳ In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

@lyse@lyse.isobeef.org

How many tickets and merge requests did you get before moving to your own server?

Hm, these were probably some of the more active projects:

So it’s not a ton of stuff and there are many ā€œissuesā€ I opened myself, but it’s certainly more than these days.

Haven’t used git send-email even once. I definitely have to look into that soon. Wanted to do that for several years. I typically upload the patch to my server and send a link via IRC.

git send-email is good for sending patches to a mailing list (because then the individual patches can be discussed easily), but since those are dying out as well, it loses its appeal. If you want to send patches to a single person, just sending the link to your repo is far easier. šŸ¤”

⤋ Read More
↳ In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

@movq@www.uninformativ.de Finally, your software is just perfect and finished by now, no need to report non-existing bugs or send in code changes. :-) How many tickets and merge requests did you get before moving to your own server?

I have to admit that I use git format-patch so rarely, I always have to pull it up from my shell history. Haven’t used git send-email even once. I definitely have to look into that soon. Wanted to do that for several years. I typically upload the patch to my server and send a link via IRC.

Maybe I was just very unlucky, but my experience is that you can perfectly ignore people and their work who only do it for the ā€œfameā€. It’s almost always been from inferior quality to say the least.

⤋ Read More

I’m seeing some slowdowns in Vim lately. Must have something to do with syntax highlighting or indentation rules or something: When I hit Enter to go to the next line, it sometimes freezes for like 100 ms. It’s pretty annoying.

Doesn’t happen in Vim Classic, so I switched all my machines to that now.

⤋ Read More
↳ In-reply-to » Okay, so, my website also includes my code / git repos, and those are made browsable by stagit. What I don’t like about this (these days) is that this includes all the diffs of my commits. In other words: All my code.

@lyse@lyse.isobeef.org Thanks. šŸ˜… Yeah, I already found it slightly annoying myself. Let’s see how the bots respond to the new situation. šŸ¤”

⤋ Read More
↳ In-reply-to » Okay, so, my website also includes my code / git repos, and those are made browsable by stagit. What I don’t like about this (these days) is that this includes all the diffs of my commits. In other words: All my code.

@prologic@twtxt.net Hmmm, I have no idea how to solve that problem. šŸ˜… Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

I thought I had made that super easy, because you can just send me an email – no sign-up process, nothing. But that’s way too old-school, people don’t know how to use git format-patch (let alone git send-email) and they also don’t understand that they can just send me a link to their forked Git repo (which can be hosted anywhere). Git is super flexible and powerful, but those features are hardly ever used.

Maybe people even need some kind ā€œrewardā€, or ā€œfameā€. Like those ā€œachievementsā€ that you can unlock on GitHub. (Something to put in their CV … ?)

⤋ Read More
↳ In-reply-to » Okay, so, my website also includes my code / git repos, and those are made browsable by stagit. What I don’t like about this (these days) is that this includes all the diffs of my commits. In other words: All my code.

@movq@www.uninformativ.de Works good. I fully get and support your reasoning behind that change. There’s only one downside. Quickly looking at some code snippets in the browser helps me to quickly judge whether it’s worth to clone a repo or not. Oh well. :-) After all I know that movqware always is.

⤋ Read More
↳ In-reply-to » I don't get people strolling in nature with headphones on and constantly staring at their phones all the time. Why even go outside if you cover ears and eyes? Okay, you're on the move and smell the country air, but still. Yesterday, one girl was wearing earphones and reading a real book while walking on a field path. Better than a phone, sure, but what the hell!?

@movq@www.uninformativ.de Luckily, I’m not an autist. If you walk next to a busy road or airport, I totally get the annoying noises. I’d plug my ears, too. But I meant in the woods where there are almost only nature sounds. Maybe they miss the jackhammers etc. :-D

@david@daiwei.me Hell yeah, let’s finally reintroduce the big predators! :-D

⤋ Read More
↳ In-reply-to » Okay, so, my website also includes my code / git repos, and those are made browsable by stagit. What I don’t like about this (these days) is that this includes all the diffs of my commits. In other words: All my code.

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@www.uninformativ.de is on to something, but not to the extend implemented, somewhere in the middle I think? šŸ¤”

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

@david@daiwei.me Bah you 🤣 Do you know how hardā„¢ it is to write a compier, a self-hosted compiler that has two runtime engines? šŸ˜…

⤋ Read More

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.

⤋ Read More
↳ In-reply-to » I don't get people strolling in nature with headphones on and constantly staring at their phones all the time. Why even go outside if you cover ears and eyes? Okay, you're on the move and smell the country air, but still. Yesterday, one girl was wearing earphones and reading a real book while walking on a field path. Better than a phone, sure, but what the hell!?

@lyse@lyse.isobeef.org A small portion of people might do the headphone thing because of autism or sensory issues, to isolate them from annoying noises. I used to do that myself. šŸ¤”

⤋ Read More

Okay, so, my website also includes my code / git repos, and those are made browsable by stagit. What I don’t like about this (these days) is that this includes all the diffs of my commits. In other words: All my code.

This makes it super easy for malicious crawlers to slurp up valuable data. I don’t like that.

I’m thinking about switching to this instead:

https://movq.de/git2/

It still shows project infos and there are Atom feeds, but to get the code, you have to actually clone the repos.

šŸ¤”

(If you spot any bugs, let me know.)

⤋ Read More

Does this seem right to you so far @david@daiwei.me ? šŸ¤”

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? šŸ”‘

⤋ Read More
↳ In-reply-to » I should really fix this damn bug where new replies to read replies to unknown conversation roots are not showing up in tt. I run into this bug almost daily for weeks now.

@prologic@twtxt.net A screenshot won’t help in this case, as you don’t see anything. :-D It starts off just fine with a conversation tree like that:

Unknown conversation root
└╓Read reply
  └╓Read subreply

Everything works. After reloading the feeds, a new message becomes part of the conversation, so the conversation e.g. looks:

Unknown conversation root
└╓Read reply
  ā”œā•“Read subreply
  └╓Unread subreply

However, the bug is that the whole conversation is not shown at all. None of the three (or four with the root) messages appear in the message tree view. My recursive SQL determining the messages to display is clearly broken.

⤋ Read More
↳ In-reply-to » šŸ“£ ACTION REQUIRED: Hey folks šŸ‘‹ For those of you whom are using the Twtxt App either via the Hosted option or on your own twtd instnace or via Github/Gitea or any other publishing backend (doesn't amtter). Please read.

I will be monitoring the server logs for the next ~28 days, after that orphaned Namespaces will start to get cleaned up, especially ones that have never bothered to care about recovery.

⤋ Read More

šŸ“£ ACTION REQUIRED: Hey folks šŸ‘‹ For those of you whom are using the Twtxt App either via the Hosted option or on your own twtd instnace or via Github/Gitea or any other publishing backend (doesn’t amtter). Please read.

Please open the app and you should be prompted to save your recovery code for your device. This basically is all of your settings, follows, etc in the app itself. This is synced to the Origin everytime you make a change, and also stored on-device. This is what makes it possible to sync your setting across services, move to another device, etc.

Please save a copy of the recovery code somewhere. This is only your only way to recover your settings.

Thank you šŸ™

⤋ Read More

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 🤣

⤋ Read More

@ponderpoints@twtpub.com Welcome to Yarn.social šŸ‘‹ Interesting video, I actually watched it all the way through, riverting stuff really and quite well put together. The idea of ā€œsubjective experienceā€ is a rather complicated thing to describe and you’re right, how do we even know we have them? šŸ¤”

⤋ Read More

I should really fix this damn bug where new replies to read replies to unknown conversation roots are not showing up in tt. I run into this bug almost daily for weeks now.

⤋ Read More

@david@daiwei.me Right now, tt’s theme is baked into the binary. I have to edit the ui/styles.go and recompile. Luckily, this almost takes no time. But my todo list already includes a bullet point to make this customizable via the configuration file. :-)

⤋ Read More

@david@daiwei.me Ha, I just noticed that I changed Newsboat’s defaults. Right from the factory, new items are just bold, while read ones aren’t. No different colors, white on black. Focused items are bold yellow on blue. No matter the read status. I think that’s why I started to play with the config to differentiate them. It’s been so long ago that I didn’t know anymore I even messed with that.

And yes, you’re right, the red on black is borderline readable. Also, my white on green focus is rather silly. But I’m sooo used to it, I don’t realize how bad the contrast is. To be fair, I don’t spend a lot of time in the lists. Aha, there are new articles, Enter to hit the artice view, read it, press n to immediately jump to the next unread article, rince and repeat, finally I’m back in the article list view.

Default theme, read focused:

Image

Default theme, unread focused:

Image

Lyse’s schlimmbesserung, read focused:

Image

Lyse’s schlimmbesserung, unread focused:

Image

⤋ Read More

To retest: reload the app, reconnect Codeberg/Gitea with the same token, fill in the new Owner field (dce), repo twtxt, and Feed URL https://hashnix.club/~dce/twtxt.txt. Publish to Codeberg, serve from Hashnix — exactly what you wanted šŸ¤ž lemme know!

⤋ Read More

@dce@hashnix.club 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 šŸ‘

⤋ Read More

@david@daiwei.me I had to look these up, horror isn’t my genre at all. :-D No idea what the cool kids use today, but I still have zsh as my interactive shell. For shell scripts, though, I try to stick to POSIX and only resort to bash if really needed or it would be too cumbersome.

⤋ Read More

You may have noticed I am not as active as I used to be here. Old @bender@twtxt.net isn’t going anywhere, though! But… I am Hyde, and my Jekyll resides at @david@daiwei.me. Jekyll is having his turn more often now, so if you follow my pure, unrestrained evil, you may as well follow my dark desires, hypocrite counterpart. 😈🤣

Follow @david@daiwei.me, or I will bend you!

⤋ Read More

Unread messages are yellow, while read messages are white in tt. Focusing them just alternates the fore- and background colors. With the old color scheme, I disliked that inline code and code blocks were basically just the opposite of normal text. Hence, unread code was white and read code yellow. I found this often confusing, especially with larger code blocks. Sure, there are the timestamp and author columns that still show the usual white (read) and yellow (unread) background for selected messages, but still.

This is how it was before with unread messages:

Image

Before with read messages:

Image

So, I just reworked the code styles. Not sure if I like that or if it is actually an improvement. Unread code is teal on gray when not in focus and becomes blue on orange when focused. I thought the dark gray code background on a black regular background is still nice and subtle. The same similarity in colors for focused messages meant to go with an orange code background on a yellow regular background. The teal was too light, so went with a blue foreground color:

Image

When read and unfocused, the new color scheme calls for the same code style teal on dark gray. However, with white as the main background for selected messages, I went with a light gray code background and a blue code foreground. Again, the contrast with white and teal wasn’t good enough. Vice versa, blue on dark gray is also not all that readable:

Image

It looks like a parrot. Let’s see if I begin to like it.

⤋ Read More
↳ In-reply-to » I trip over this in our code at work all the time.

@movq@www.uninformativ.de The nice thing about properties is that you can compute and cache things on the fly at first attempt and also ensure validation for writing. But like you said, since it’s not obvious that reading or writing might do some more things, it’s strongly advised to avoid doing expensive stuff disguised as properties.

I reckon the vast majority of property use cases is to provide read-only access. At least that was my impression when I was doing a lot more in Python.

Personally, I think that this just reads a lot nicer:

oink.my_property
oink.my_property = 42

Than:

oink.get_my_property()
oink.set_my_property(42)

Btw, any field access is implemented using method calls. I might be wrong, but I believe there’s always __getattr__ and __setattr__ involved. 8-)

⤋ Read More

I trip over this in our code at work all the time.

Python has this concept of ā€œpropertiesā€:

class Oink:
    def __init__(self):
        self._foo = 3

    @property
    def my_property(self):
        return self._foo


a = Oink()
print(a.my_property)

my_property() is a method but it can be used as if it were a field.

This can also be used to define a setter:

class Oink:
    def __init__(self):
        self._foo = 3

    @property
    def my_property(self):
        return self._foo

    @my_property.setter
    def my_property(self, value):
        self._foo = 123 * value

Because, for some reason, Python people don’t like getters and setters. Instead, they hide it behind a property.

The result is, when you read this:

a.my_property = 5
print(a.my_property)

You have no idea that this actually calls a method.

⤋ Read More

@david@daiwei.me Oh, really? I thought I’ve posted compose view screenshots before. Anyway. Glad you like it as much as I do. :-)

The update interval has always been one second. I just didn’t remember and thus tried to time it by watching the preview update while typing. It felt like roughly under two seconds, but apparently my inner clock was off. After taking the screenshot and then examining it more closely, I noticed that the interval is stated right in the UI. :-D So, I just amended my message and didn’t bother taking a new screenshot. I figured I just leave it alone and see who spots the change, if at all. And, of course, you found the easter egg. Congrats, mate! 8-)

⤋ Read More
↳ In-reply-to » @lyse Ahh yes, but tt has a "draft" mode right? You didn't publish, then edit over and over did you? šŸ˜…

@prologic@twtxt.net Not sure if this really counts as a draft mode or this is what you had in mind. I just was in the editor for ages and didn’t close it. tt provides an integrated preview for the rendered message in there. It automatically updates every second.

Here’s a screenshot of the compose view with the conversation context on the top to which to reply to, the editor in the middle and the almost-live preview at the bottom, I hope it’s big enough:

Image

But it’s not like I hit the ā€œAdd messageā€ button in the compose view (the one currently selected on the screenshot), see the message in the conversation tree and then come back into the compose view to continue editing. There’s no edit functionality in tt. Once the message is appended to my twtxt.txt file on disk, all I can do is edit it with vim. The U+2028 line breaks are really annoying to deal with (I’m sure I could do something about that if I spent the time), so I try to avoid that at all costs.

Once new messages have been added to my local file, I then manually upload the file to my server in a separate terminal. There’s no upload command integrated into tt. Right from my very first message in the beginning, I’ve always done it exactly like that. I’m used to this and it really doesn’t bother me. But I can see that others might not be fans of that at all. I might add an upload mechanism to tt at some point in the future.

⤋ Read More

I really think I should go back to Java.

Writing programs in Python is so exhausting. I want a compiler and I want static typing. No, linters and type checkers and IDEs are not good enough. Compilers catch way more errors in advance.

Rust is also exhausting. They’re constantly adding language features and, at the same time, the runtime library remains tiny and you need 3rd party libraries for everything. Many of those are still at version 0.x (SemVer!) and you can’t rely on anything. Often times, you need the latest Rust nightly compiler.

Go is … I don’t like it. And huge binaries.

I like C as a language, but it’s too fragile. I want to have a proper HashMap every now and then.

None of the above have good GUI libraries, at least not on Linux.

And then there’s Java. This is my fractal renderer that I wrote over 17 years ago:

https://movq.de/v/fcd3c4e557/vid-1784121825.mp4

It’s fast. It has a GUI with custom widgets and those weren’t even hard to make. It still works without changing a single line of code. The source code files have timestamps from 2009 and I just noticed that the JAR file I’m using in the video was compiled in 2010.

Java as a language is relatively easy to learn and to master. There are few surprises. The source code organization with packages is good. Java API docs are clear and well written.

The JVM ramp-up times have improved considerably:

https://movq.de/v/e7314e521e/vid-1784121998.mp4

This isn’t like the Dark Ages anymore. Might even be usable for some CLI tools.

The only thing where Java really sucks is anything close-ish to the kernel. Try issuing an ioctl() … I couldn’t have made my TUI framework in Java, but then again, I wouldn’t have needed to because Swing already exists and it just works.

⤋ Read More
↳ In-reply-to » Easy way to do digital detox: Use a Mastodon instance that someone else maintains. And when it’s down, there’s nothing you can do but wait. šŸ˜…

@david@daiwei.me That’s a good thing. I still use it heavily, but I also realize that it is addictive. This whole idea of getting likes and boosts is horrible. Seeing ā€œnumber goes upā€ is inherently addictive design, if you ask me. This should never have been added to a Free Platform like Mastodon, and I’m glad that twtxt doesn’t have anything like it.

⤋ Read More

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.

⤋ Read More
↳ In-reply-to » Yeah, lol, fuck off. Tried to reproduce that hashing issue, thus playing around with Go a little bit. And what did I find?

I also set this to local years ago:

$ go env | grep TELEM
GOTELEMETRY='local'

When this came out I was also outraged. But it doesn’t go anywhere, there are no network connections. It is effectively ā€œoffā€ like this.

⤋ Read More
↳ In-reply-to » I don't think I'm going to add edit and delete support in this app because I think it was a horrible mistake to add those features to a client 🤣

I will very likely add a way to delete your feed(s) from the search engine, because I do thing that’s important. But as Art 17 points out, we can’t really guaranteed deletion in everyone’s caches around the planet haha šŸ˜†

⤋ Read More
↳ In-reply-to » I don't think I'm going to add edit and delete support in this app because I think it was a horrible mistake to add those features to a client 🤣

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.

⤋ Read More
↳ In-reply-to » I don't think I'm going to add edit and delete support in this app because I think it was a horrible mistake to add those features to a client 🤣

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.

⤋ Read More
↳ In-reply-to » Yeah, lol, fuck off. Tried to reproduce that hashing issue, thus playing around with Go a little bit. And what did I find?

@movq@www.uninformativ.de Yes, this is absolutely a no-go!

A long time ago when the first telemetry shitstorm happened, I added export GOTELEMETRY=off in my ~/.zshrc. But it doesn’t seem to be picked up at all (I actually call this sabotage!):

$ go env GOTELEMETRY
local

$ go env -w GOTELEMETRY=off
go: GOTELEMETRY cannot be modified

$ go telemetry off

$ go env GOTELEMETRY
off

⤋ Read More
↳ In-reply-to » I don't think I'm going to add edit and delete support in this app because I think it was a horrible mistake to add those features to a client 🤣

as upset repeatedly in the past and many debates and discussions, I don’t think there’s any other viable way to do, threatening in a purely decentralized way because I think you’re just create another set of problems that are probably likely far worse

⤋ Read More

@david@daiwei.me 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

⤋ Read More

I don’t think I’m going to add edit and delete support in this app because I think it was a horrible mistake to add those features to a client 🤣

⤋ Read More

Yeah, lol, fuck off. Tried to reproduce that hashing issue, thus playing around with Go a little bit. And what did I find?

$ tree ~/.config/go
/home/user/.config/go
└── telemetry
    ā”œā”€ā”€ local
    │   ā”œā”€ā”€ asm@devel-devel-linux-amd64-2026-07-14.v1.count
    │   ā”œā”€ā”€ compile@devel-devel-linux-amd64-2026-07-14.v1.count
    │   ā”œā”€ā”€ go@devel-devel-linux-amd64-2026-07-14.v1.count
    │   ā”œā”€ā”€ link@devel-devel-linux-amd64-2026-07-14.v1.count
    │   ā”œā”€ā”€ upload.token
    │   └── weekends
    └── upload

4 directories, 6 files

It collects and uploads ā€œtelemetryā€ now.

No.

(Don’t tell me how I can turn that off. Not interested. This is a compiler and it wants to track me, without asking for consent. That’s a no-go.)

⤋ Read More
↳ In-reply-to » 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 šŸŽ‰

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

⤋ Read More