Rideshare Giant Grab Moves 200 Macs Out of the Cloud, Expects To Save $2.4 Million
Singaporean super-app company Grab has dumped 200 cloudy Mac Minis and replaced them with physical machines, a move it expects will save $2.4 million over three years. From a report: Grab is Southeast Asiaβs leading rideshare and food delivery outfit and therefore needs to build apps for iOS to connect with custom β¦ β Read more
Thousands of Flights in Danger of Cancellation as FAA Announces Major Cuts
The government shutdown-spurred airport chaos is about to get a whole lot worse. From a report: The Federal Aviation Administration said Wednesday it will reduce flight volumes by 10 percent across 40 major airports in response, a move that could threaten 3,000 to 4,500 flights daily. The cuts will affect βhigh volumeβ markets β¦ β Read more
@movq@www.uninformativ.de Donβt you worry, this was meant as a joke. :-D
There was a time when I thought that Swing was actually really good. But having done some Qt/KDE later, I realized how much better that was. That were the late KDE 3 and early KDE 4 days, though. Not sure how it is today. But back then it felt Trolltech and the KDE folks put a hell lot more thought into their stuff. I was pleasantly surprised how natural it appeared and all the bits played together. Sure, there were the odd ends, but the overall design was a lot better in my opinion.
To be fair, I never used it from C++, always the Python bindings, which were considerably more comfortable (just alone the possibility to specify most attributes right away as kwargs in the constructor instead of calling tons of setters). And QtJambi, the Java binding, was also relatively nice. I never did a real project though, just played around with the latter.
@bender@twtxt.net Hm, are we talking about different dates or are there different timezone offsets for this timezone abbreviation? With EDT being UTC-4, 2025-11-02T12:00:00Z is Sunday at 8:00 in the morning local time for you. Or were did I mess up here? :-?
@prologic@twtxt.net You want me to submit a reply with βI probably wonβt show upβ?
groff --version)?
@movq@www.uninformativ.de Itβs an ancient 1.22.4. :-)
Hey @itsericwoodward@itsericwoodward.com, I just wanna let you know that twtstrm/0.4.0 sends a broken User-Agent header. Instead of the URL, the nick is repeated.
@prologic@twtxt.net I know we wonβt ever convince each other of the otherβs favorite addressing scheme. :-D But I wanna address (haha) your concerns:
I donβt see any difference between the two schemes regarding link rot and migration. If the URL changes, both approaches are equally terrible as the feed URL is part of the hashed value and reference of some sort in the location-based scheme. It doesnβt matter.
The same is true for duplication and forks. Even today, the βcannonical URLβ has to be chosen to build the hash. Thatβs exactly the same with location-based addressing. Why would a mirror only duplicate stuff with location- but not content-based addressing? I really fail to see that. Also, who is using mirrors or relays anyway? I donβt know of any such software to be honest.
If there is a spam feed, I just unfollow it. Done. Not a concern for me at all. Not the slightest bit. And the byte verification is THE source of all broken threads when the conversation start is edited. Yes, this can be viewed as a feature, but how many times was it actually a feature and not more behaving as an anti-feature in terms of user experience?
I donβt get your argument. If the feed in question is offline, one can simply look in local caches and see if there is a message at that particular time, just like looking up a hash. Whereβs the difference? Except that the lookup key is longer or compound or whatever depending on the cache format.
Even a new hashing algorithm requires work on clients etc. Itβs not that you get some backwards-compatibility for free. It just cannot be backwards-compatible in my opinion, no matter which approach we take. Thatβs why I believe some magic time for the switch causes the least amount of trouble. You leave the old world untouched and working.
If these are general concerns, Iβm completely with you. But I donβt think that they only apply to location-based addressing. Thatβs how I interpreted your message. I could be wrong. Happy to read your explanations. :-)
Iβve got a prototype of my hardcopy simulator going. Iβm typing on the keyboard and the βdisplayβ goes to the printer:
https://movq.de/v/56feb53912/s.png
https://movq.de/v/235c1eabac/MVI_8810.MOV.mp4
The biiiiiiiiiig problem is that the print head and plastic cover make it impossible to see whatβs currently being printed, because this is not a typewriter. This means: In order to see what I just entered, I have to feed the paper back and forth and back and forth β¦ itβs not ideal.
I got that idea of moving back/forth from Drew DeVault, who β as it turned out β did something similar a few years back. (I tried hard to read as little as possible of his blog post, because figuring things out myself is more fun. But that could mean I missed a great idea here or there.)
But hey, at least this is running on my Pentium 133 on SuSE Linux 6.4, printer connected with a parallel cable. π
(Also, yes, you can see the printouts of earlier tests and, yes, I used ed(1) wrong at one point. π€ͺ And ls insisted on using colors β¦)
Hereβs an interesting thought/angle on this topic:
gemini://gemini.conman.org/boston/2025/08/21.1
A further check showed that all the network blocks are owned by one organizationβTencent [4]. Iβm seriously thinking that the CCP (Chinese Communist Party) encourage this with maybe the hope of externalizing the cost of the Great Firewall [5] to the rest of the world.
(Just for fun, SuSE Linux 6.4 from ~25 years ago: https://movq.de/v/dc62d0256c/s.png )
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz Colorized manpages have been a thing for a very long time:
https://movq.de/v/81219d7f7a/s.png
Problem is, hardly anybody knows this, because you configure this by β¦ drumroll β¦ overwriting TERMCAP entries of less in your ~/.bashrc:
export LESS_TERMCAP_md=$'\e[38;5;3m' # Bold⨠export LESS_TERMCAP_me=$'\e[0m' # End Bold
export LESS_TERMCAP_us=$'\e[4;38;5;6m' # Underline⨠export LESS_TERMCAP_ue=$'\e[0m' # End Underline
export GROFF_NO_SGR=1 # Needed since groff 1.23
@lyse@lyse.isobeef.org 4 years. π«€
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz I spent so much time in the past figuring out if something is a dict or a list in YAML, for example.
What are the types in this example?
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 133.7
quantity: 1
items is a dict containing β¦ a list of two other dicts? Right?
It is quite hard for me to grasp the structure of YAML docs. π’
The big advantage of YAML (and JSON and TOML) is that itβs much easier to write code for those formats, than it is with XML. json.loads() and youβre done.
The WM_CLASS Property is used on X11 to assign rules to certain windows, e.g. βthis is a GIMP window, it should appear on workspace number 16.β It consists of two fields, name and class.
Wayland (or rather, the XDG shell protocol β core Wayland knows nothing about this) only has a single field called app_id.
When you run X11 programs under Wayland, you use XWayland, which is baked into most compositors. Then you have to deal with all three fields.
Some compositors map name to app_id, others map class to app_id, and even others directly expose the original name and class.
Apparently, there is no consensus.
@movq@www.uninformativ.de Yeah, itβs a shitshow. MS overconfirms all my prejudices constantly.
Ignoring e-mail after lunch works great, though. :-)
Our timetracking is offline for over a week because of reasons. The responsible bunglers are falling by the skin of their teeth: https://lyse.isobeef.org/tmp/timetracking.png
- The error message neither includes the timeframe nor a link to an announcement article.
- The HTML page needs to download JS in order to display the fucking error message.
- Proper HTTP status codes are clearly only for big losers.
- Despite being down, heaps of resources are still fetched.
I find it really fascinating how one can screw up on so many levels. This is developed inhouse, Iβm just so glad that weβre not a software engineering company. Oh wait. How embarrassing.
@prologic@twtxt.net Yeah, this really could use a proper definition or a βmanifestβ. π Many of these ideas are not very wide spread. And I havenβt come across similar projects in all these years.
Letβs take the farbfeld image format as an example again. I think this captures the βspiritβ quite well, because this isnβt even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
ββββββββββ€ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bytes β Description β
β βββββββββͺββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β 8 β "farbfeld" magic value β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (width) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (height) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [2222] β 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major β
ββββββββββ§ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I donβt know if your screen reader can work with this. Let me know if it doesnβt.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no βknobsβ: Itβs just a single version, itβs not like thereβs also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, itβs useful. Iβve used it in various programs, like my window manager, my status bars, some toy programs like βtuxeyesβ (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesnβt need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesnβt cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided itβs not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereβs no βbestβ 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnβt write
- Donβt use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donβt ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youβre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed β but this doesnβt βaddβ to the program. Donβt use βsoftware is never doneβ as an excuse to keep adding and adding stuff to your code.
@prologic@twtxt.net β¦ or just bullshit.
Iβm Alex, COO at ColdIQ. Built a $4.5M ARR business in under 2 years.
Some βC-levelβ guy telling people what to do, yeah, I have my doubts.
@movq@www.uninformativ.de Me too π β Speaking of which i know youβve lost a bit of βmojoβ or βenergyβ (so have i of late), rest assured, I want to keep the status quo here with what weβve built, keep it simple and change very little. What weβve built has worked very well for 5+ years and we have at least 3 very strong clients (maybe 4 or 5?).
@movq@www.uninformativ.de Ahh but it kind of is mine π Or at least Iβve done this kind of thing at least 3 or 4 times now π€£
SuSE Linux 6.4 and Arachne on DOS also work (with Windows 2000 as a call target):
This is my highlight, really, havenβt seen this in action in a loooooooong time:
One of the nicest things about Go is the language itself, comparing Go to other popular languages in terms of the complexity to learn to be proficient in:
- Go:
25keywords (Stack Overflow); CSP-style concurrency (goroutines & channels)
- Python 2:
30keywords (TutorialsPoint); GIL-bound threads & multiprocessing (Wikipedia)
- Python 3:
35keywords (Initial Commit); GIL-bound threads,asyncio& multiprocessing (Wikipedia, DEV Community)
- Java:
50keywords (Stack Overflow); threads +java.util.concurrent(Wikipedia)
- C++:
82keywords (Stack Overflow);std::thread, atomics & futures (en.cppreference.com)
- JavaScript:
38keywords (Stack Overflow); single-threaded event loop &async/await, Web Workers (Wikipedia)
- Ruby:
42keywords (Stack Overflow); GIL-bound threads (MRI), fibers & processes (Wikipedia)
On my blog: Free Culture Book Club β Pilogy, part 4 https://john.colagioia.net/blog/2025/05/17/pilogy-4.html #freeculture #bookclub
1 RPM. This is a rather aggressive rate limit actually. This basically makes Github inaccessible and useless for basically anything unless you're logged in. You can basically kiss "pursuing" casually, anonymously goodbye.
@bender@twtxt.net 5, 4, 3, 2, 1 π€£
7 to 12 and use the first 12 characters of the base32 encoded blake2b hash. This will solve two problems, the fact that all hashes today either end in q or a (oops) π
And increasing the Twt Hash size will ensure that we never run into the chance of collision for ions to come. Chances of a 50% collision with 64 bits / 12 characters is roughly ~12.44B Twts. That ought to be enough! -- I also propose that we modify all our clients and make this change from the 1st July 2025, which will be Yarn.social's 5th birthday and 5 years since I started this whole project and endeavour! π± #Twtxt #Update
We have 4 clients but this should be 6 I believe with tt2 from @lyse@lyse.isobeef.org and Twtxtory from @javivf@adn.org.es?
Can you automate the drawing with a script? On X11, you can:
#!/bin/sh
# Position the pointer at the center of the dot, then run this script.
sleep 1
start=$(xdotool getmouselocation --shell)
eval $start
r=400
steps=100
down=0
for step in $(seq $((steps + 1)) )
do
# pi = 4 * atan(1)
new_x=$(printf '%s + %s * c(%s / %s * 2 * (4 * a(1)))\n' $X $r $step $steps | bc -l)
new_y=$(printf '%s + %s * s(%s / %s * 2 * (4 * a(1)))\n' $Y $r $step $steps | bc -l)
xte "mousemove ${new_x%%.*} ${new_y%%.*}"
if ! (( down ))
then
xte 'mousedown 1'
down=1
fi
done
xte 'mouseup 1'
xte "mousemove $X $Y"

Interestingly, you can abuse the scoring system (not manually, only with a script). Since the mouse jumps to the locations along the circle, you can just use very few steps and still get a great score because every step you make is very accurate β but the result looks funny:

π₯΄
I had Chick-fil-A breakfast today (sausage, egg, and cheese biscuit, hash browns, coffee, and orange juice). Then at lunch my work place offered hot dogs. I had two (kosher, if that matters), plus a coke, a macadamia nuts cookie, and a small chocolate brownie.
So, here I am, at home, feeling hungry but guilty and refusing to eat anything else for the rest of the day. To top it off, I have only clocked 4,000 steps today (and I donβt feel like walking). I am going to hell, am I?
This is something for @movq@www.uninformativ.de and old OS hobbyists alike: FreeDOS 1.4! Get it while itβs hot!
See:
<textarea id="text" name="text" placeholder="Hi! π Don't forget to post a Twt today!" rows="4" maxlength="576" required="true" aria-required="true"></textarea>
So, 576?
irc.mills.io running behind Caddy Layer 4. However I don't terminate TLS at the edge in this case.
@bender@twtxt.net Sure! π
{
...
# Layer 4 Reverse Proxy
layer4 {
# Gopher
0.0.0.0:70 {
route {
proxy <internal_ip>:70
}
}
# IRC (TLS)
0.0.0.0:6697 {
route {
proxy <internal_ip>:6697
}
}
}
}
@kate@yarn.girlonthemoon.xyz I already have my IRC server irc.mills.io running behind Caddy Layer 4. However I donβt terminate TLS at the edge in this case.
Add support for skipping backup if data is unchagned Β· 0cf9514e9e - backup-docker-volumes - Mills π I just discovered today, when running backups, that this commit is why my backups stopped working for the last 4 months. It wasnβt that I was forgetting to do them every month, I broke the fucking tool π€£ Fuck π€¦ββοΈ
@thecanine@twtxt.net I mean I can restore whatever anyone likes, the problem is the last backup I took was 4 months ago π So I decided to start over (from scratch). Just let me know what you want and Iβll do it! I used the 4-month old backup to restore your account (by hand) and avatar at least π€£
This weekend (as some of you may now) I accidently nuke this Podβs entire data volume π€¦ββοΈ What a disastrous incident π€£ I decided instead of trying to restore from a 4-month old backup (weβll get into why I hadnβt been taking backups consistently later), that weβd start a fresh! π Spring clean! π§Ό β Anywayβ¦ One of the things I realised was I was missing a very critical Safety Controls in my own ways of workingβ¦ Iβve now rectified thisβ¦
@movq@www.uninformativ.de Weβll recover just fine right ? π Itβs only 4 months worth of posts π Not like itβs the end of the world π
Oh well. Iβve gone and done it again! This time Iβve lost 4 months of data because for some reason Iβve been busy and havenβt been taking backups of all the things I should be?! π€ Farrrrk π€¬
Just saw this user agent popping up:
yarnd/ERSION@OMMIT go1.23.4 (+https://.../twtxt.txt; @username)
ERSION? OMMIT? π
Chapter 2:
Chapter 4: Chapter 5:
ah crap. chapters 2, 4 and 5 are being cropped by yarn on upload. they should be more like 2-3 hours long
Chapter 3:
Chapter 4:
so dry.. haha this would put me to sleep
@bender@twtxt.net @prologic@twtxt.net The outcome was to be expected but itβs still pretty catastrophic. Hereβs an overview:

East Germany is dominated by AfD. Bavaria is dominated by CSU (itβs always been that way, but this is still a conservative/right party). Black is CDU, the other conservative/right party.
The guy whoβs probably going to be chancellor recently insulted the millions of people who did demonstrations for peace/anti-right. βIdiotsβ, βtheyβre nutsβ, stuff like that. This was before the election. He already earned the nickname βMini Trumpβ.
Both the right and the left got more votes this time, but the left only gained 3.87 percentage points while the right (CDU/CSU + AfD) gained 14.72:

The Green party lost, SPD (βmid-leftβ) lost massively (worst result in their history). FDP also lost. These three were the previous government.
This isnβt looking good at all, especially when you think about whatβs going to happen in the next 4 years. What will CDU (the winner) do? Will they be able to βturn the ship aroundβ? Highly unlikely. They are responsible for the current situation (in large parts). They will continue to do business as usual. They will do anything but help poor/ordinary people. This means that AfD will only get stronger over the next 4 years.
Our only hope would be to ban AfD altogether. So far, nobody but non-profit organizations is willing to do that (for unknown reasons).
I donβt even know if banning the AfD would help (but itβs probably our best/only option). AfD politicians are nothing but spiteful, hateful, angry, similar to Trump/MAGA. If youβve seen these people talk and still vote for them, then you must be absolutely filled with rage and hatred. Very concerning.
Correct me if Iβm wrong, @lyse@lyse.isobeef.org, @arne@uplegger.eu, @johanbove@johanbove.info.
@eapl.me@eapl.me I can do that as soon as I get back home. Also, just in case youβve missed it, Choice 1 is actually 4 different variations.
#genuary #genuary2025 #genuary17 Maybe related to today prompt: What happens if pi=4? https://youtu.be/tGfUaZ8hTzg
So Go lang is at a funny version huhβ v1.23.4 will there ever be a v1.23.45678? π« π€‘
It turns out my ISP supports ipv6. After 4-5 months with only ipv4, I thought to ask customer support, and they told me how to turn it on. (Iβm pretty happy with ebox so far. Low-priced fibre with no issues so far. Though all my traffic goes through Montreal, 500km away from me in Toronto, which adds a few ms to network latency.)
@sorenpeter@darch.dk on 4 for gemini if your TLS client certificate contains your nick@host could that work for discovery?
@eapl.me@eapl.me here are my replies (somewhat similar to Lyseβs and Jamesβ)
Metadata in twts: Key=value is too complicated for non-hackers and hard to write by hand. So if there is a need then we should just use #NSFS or the alt-text file in markdown image syntax
if something is NSFWIDs besides datetime. When you edit a twt then you should preserve the datetime if location-based addressing should have any advantages over content-based addressing. If you change the timestamp the its a new post. Just like any other blog cms.
Caching, Yes all good ideas, but that is more a task for the clients not the serving of the twtxt.txt files.
Discovery: User-agent for discovery can become better. Iβm working on a wrapper script in PHP, so you donβt need to go to Apaches log-files to see who fetches your feed. But for other Gemini and gopher you need to relay on something else. That could be using my webmentions for twtxt suggestion, or simply defining an email metadata field for letting a person know you follow their feed. Interesting read about why WebMetions might be a bad idea. Twtxt being much simple that a full featured IndieWeb sites, then a lot of the concerns does not apply here. But thatβs the issue with any open inbox. This is hard to solve without some form of (centralized or community) spam moderation.
Support more protocols besides http/s. Yes why not, if we can make clients that merge or diffident between the same feed server by multiples URLs
Languages: If the need is big then make a separate feed. I donβt mind seeing stuff in other langues as it is low. You got translating tool if you need to know whats going on. And again when there is a need for easier switching between posting to several feeds, then itβs about building clients with a UI that makes it easy. No something that should takes up space in the format/protocol.
Emojis: Iβm not sure what this is about. Do you want to use emojis as avatar in CLI clients or it just about rendering emojis?