@zyak@twtxt.z85b.xyz Heck yeah, that looks really nice, mate! My last shot at them was way back in school. But it never really worked out even remotely like I imagined in my head. My colors always mixed, it was impossible to keep them separated. Maybe too much water and the wrong paper. I should give it a go again, too.
@shinyoukai@twtxt.net Yeah, I think you can get pretty far with a few careful lines of config. But what I have here is a bit more sophisticated. Picket fingerprints connecting clients and is table to work out for example what software and stack your client is, if it really is Chrome or youāre pretneding to be Chrome.
Since building a new Edge service and capability Iāve decided to call āPicketā, Iām now dropping about ~40% of incoming traffic to the floor in various ways. Whole botnets, search engines, crawlers and all sorts of unwanted traffic are just going splat š„ ā Turns out measuring cohorts by fingerprinting and behaviour analysis from connection stats and logs alone is āenoughā⢠to block most unwanted traffic. Things like Anubis, using a PoW, which I tried, donāt really work in my expeirence.
I had dinner with some mates in the city. After 20 oāclock there are basically no trains running anymore due to construction work today and tomorrow. You can take the rail replacement service, but that more than doubles the travel time (over two hours instead of three quarters). Also, replacement buses always call for trouble. You just wanna avoid it at all costs.
I was kinda lucky and took a still running (probably last one) medium-distance train. But I had to exit one station early because it didnāt stop at my destination. Instead of waiting three quarters of an hour in 6°C for a quarter hour bus ride, I decided to just quickly walk the 5 kilometers at a smart pace. It took me 50 minutes. I opted for the direct and way uglier route, the nicer one through the forest would have added another 20 minutes to half an hour. Also, I didnāt wear my hiking boots.
Despite the horrible smell of the gelatine factory and walking right next to a four-lane road, it could have been worse. I saw an oversize load (a new rock crusher was sent from the factory to its new home), that was quite cool. It was also surprising how many cars had a broken tail light or illegally overtook on the right. Crazy! Luckily, there wasnāt a whole lot of traffic anymore.
The moon and the clouds looked really nice. Same with the foggy patches here and there. I got some much-needed exercise. The cold air felt good. I call that a success.
š Just a friendly reminder that if I donāt actually see any āuse in angerā of this little container service I call cas.run ā Then I canāt actually see how it will behave, perform and whether or not something like this will even remotely work and is worth continuing ot build out š Please š and thank you šāāļø
Since honesty is kindness, Microsoft is by far the worst company I ever had the displeasure of trying to communicate with. Getting them to fix the most basic of bugs always took years. In some cases itās been over two and a half decades and itās still broken.
I never thought it was even possible to make an operating system so broken, Iād have to manually restart my background services and set ānetwork interface metricsā by hand, in advanced TCP/IP settings, while using it.
There are buttons that donāt even do anything when clicked and ones Iāve never seen do anything other than throw an error message.
The AI they rent to pretend to be an AI company, was for years outputting paragraphs, describing the beautiful and artful checkerboard pattern in the background, whenever trying to analyze transparent images. Transparent profile pictures work only on GitHub, the one product where the implementation was done prior to Microsoft acquisition.
Many engineers in their own forums, still manage to make that very AI sound smart, in comparison.
The design is an absolute shitshow, where no two things look like they belong in the same system ā the only thing almost consistent, is excessive padding and rounded corners, placed wherever they fit the least.
But hey, 5000 engineers were fired, that will surely improve things!

In the age of AI, PR reviews at work only serve these purposes:
- A PR makes me vaguely aware that something exists. Like, I now know that thereās a component over here that probably does something with this other component over there. Maybe.
- I can āgauge the riskā: Is this something that I can simply throw away once it breaks? If not, Iāll have to bite the bullet and start a more detailed discussion about what the flying fuck your 8000 new lines of code actually do. And then youāll pull the ābut I donāt have time for this discussionā-card and we merge anyway.
- Shift the blame from author to reviewer: āIt passed review! The builds were green!ā
- I donāt need pills anymore to raise my low blood pressure.
Itās so disheartening to see everyone vomit out bullshit. āYou can use AI responsibly and actually make the code betterā, my ass. Nobody does that. Not a single soul. No human. Ever. None. Nobody.
@itsericwoodward@itsericwoodward.com Nice video effect work indeed! Such a welcome change to all the overproduced music videos. I didnāt come across Castle Rat before. The Rat Queen has a great voice. If there only was less doom/stoner metal influence in their heavy metal. ;-)
@movq@www.uninformativ.de Iām probably also not good enough. I just thought that it might be kinda alright, thereās no shortage of work, oneās hopefully not replaced soon by automation and so on. Not sure.
And yes, there are a myriad of jobs that are extremely underpaid, have awful working hours, ruining your health and where you get treated like shit.
The outlook is poor.
Made some ābracketsā that I can use to mount some small speakers on the top of my monitor. That way, they donāt take up any space on the desk.
Itās not perfect and the curvature at the back of the monitor is annoying. But it works.
Thereās a fair bit of vibration when I lower/raise the desk (hard to capture on video), and it survives that. š„³
The speakers are trash, of course. Doesnāt matter. Theyāre good enough for some light background music. Like an old FM radio. š
Letās see how long it takes until they fall down and break. šæ
@aelaraji@aelaraji.com Ahhhh, some twt from the future must have snuck in? In my database, ālatest twt in feedā had a timestamp of 1814983537 (thatās in July 2027), which made my client ignore any twts older than that. I deleted that from my DB and now itās working again. š„³
@movq@www.uninformativ.de I guess there is not really a point I was just talking about how I ai coded a twtxt client. Though I am able to get away with it working well because twtxt is simple and this software is simple.
The IT industry is absolutely poisoned and destroyed.
Yes, and hereās an example:
Iām seeing exactly this effect in our stuff at work.
And human PR reviewers (in our company) are already completely burned out, because the AI dudes just dump all their shit on us. AI is an amplifier: If you already didnāt care about good code before AI, then you most certainly wonāt start caring with AI, so the result is just a massive dumpster fire.
I suppose you can use AI to produce good code, but this takes so much time, effort, and money, you might as well code it yourself.
AI usage at work has risen to absurd and moronic levels.
Entire dev teams getting dismantled and fired.
The people that work in accounting are expected to write their own accounting software (or rather, let AI do it). Same for marketing. And everybody else.
Former ātech nerdsā, whom I used to respect, tell me that they havenāt read any code in months. Let alone written some. They tell me that āAI is really good nowā, itās the future, yadda yadda. At the same time, when I read their code, I want to scream and cry (and most days I do).
Virtually everything is vibe-coded now. Everywhere you look you get to see code that no human will ever be able to maintain. Huge system ādesignsā, expensive, slow.
At this point, Iām almost hoping for the bubble NOT to burst, because that might very well mean the end of this company (and, thus, my job).
There is no āexit strategyā. We completely depend on AI services now.
At the same time, Iām expected to implement ISO27001.
Everything is vague, chaotic, wonky, shitty, buggy.
People are actively working on making themselves obsolete, and they donāt seem to notice that theyāre doing that, because theyāre so engulfed with playing with their new AI toy.
I checked job offers, but it looks like every company is like this now. Maybe some are still a bit behind, but sooner or later, theyāll all be like that.
And the worst part is: None of this matters in the slightest, as long as thereās some idiot out there who buys our stuff. Welcome to capitalism.
People keep telling me that you can āuse AI responsiblyā and ājust to some degree, just as a toolā, but they donāt seem to realize that this does not matter in capitalism. Companies donāt need āgood productsā. They just need to sell something. If you still believe that ādoing a good jobā matters and that āthey still need competent peopleā, haha, my sweet summer child, nothing you do matters. You just happened to be needed in the past, but those days are gone.
The future is absolutely bleak ā assuming there is a future.
@movq@www.uninformativ.de Working fine for me, I believe.
Start your day with some easy wins like putting the trash out, then after breakfast youāll be more motivated to work on fighting the fash uprising.
I follow @aelaraji@aelaraji.comās feed, but it never updates. š¤ Manually fetching individual twts works, though. Do you do any aggressive filtering or something like that? š¤
(4) The First Brain Was Just Uploaded To A Computer - YouTube ā Wow š® This is pretty amazing! Scientists and this new company called Eon, have managed to replicate the entire structure of a fruit flyās brain, exactly. It behaves exactly like a fruit fly does, in itās virtual simulated world. The only thing theyāre missing is the strengths of the connections and weights of each neuron and the state of the chemical āsoupā? of the original fly, so it carries no memories and has no āmindā, but structurally it works! Holy shit! Wowza š±
My mate and I went on a hike on Saturday to Germanyās probably most famous tiniest hamlet. Well, not even hamlet, much smaller. Itās a farm (087) and a closed train station (088, 096-102). Okay, and four other houses. But thatās it. Durlesbach is known from the old folk song āAuf de schwƤbsche Eisebahneā, literally āOn the Swabian Railwayā. According to the German Wikipedia article the German Folk Song Archive counts about 100 variants on the lyrics with up to 27 verses. The song enumerates a few stations and the most common version is about a farmer who ties his goat to the back of a train in order to save the freight costs. Alternatively, heās used to that from previous ox cart trips where the goat just follows along. Of course, the goat doesnāt make it and the angry farmer throws the disembodied goat head at the conductor.
The weather was perfect. Sunny and clouds alternating, lower twenty-something degrees Celcius. Very beautiful. We took the train to Aulendorf and started our hike.
The level railway crossing in 051-054 is always closed and only opened on demand. I didnāt even know that this kind existed. But itās really quiet there. We pressed the lever to call the train dispatcher who then opened the barriers for us. A few seconds later we told him that we successfully reached the other side and he closed them again. We were confused at first because the sign said only for authorized personnel and we were just two random hikers. But we gave it a shot and the dispatcher was super nice, no worries at all.
The river is always the Schussen. 092-094 is the creek Durlesbach, entering the Schussen, though. The Durlesbach station is now privately owned, unfortunately. However, itās nicely kept in shape and thereās a cool monument with a historic steam engine, two wagons and four bronze figures reenacting the scene where the farmer is about to tie his goat, being observed by his wife and the conductor.
You can get all sorts of drinks in exchange for a donation at the display. These proceeds are used for the upkeep. I had an ACE juice which was absolutely delicious. A few hundred meters after we continued, I thought that I really should have bought a second one. It was just too good.
In Mochenwagen, we took the train back to Aulendorf. The Mochenwangen replacement service (we luckily didnāt have to take it, in fact, no idea when it is really in place) is 800 meters away from the train station. That fucking nuts.
We then changed trains to Ulm, just because that one arrived two minutes after we reached Aulendorf. But we spontaneously exited early in Biberach because we had some time to kill for the actual train to Stuttgart. The train station underpass there has some really beautiful graffiti. Shortly after, my second camera battery was flattened, too.
Going home worked out amazingly. When I switched again in Geislingen, my connecting train was already waiting on the other platform. 15 seconds before scheduled departure, the doors closed. One second to departure, we took off. Thatās very rare nowadays and it was kind of magical to witness this first hand looking at the station clock.
Sorry for the many photos. I was busy sifting through them and only kept about 20%. Still too many, I know. Enjoy, nevertheless: https://lyse.isobeef.org/2026-10-03-wanderung-von-aulendorf-ueber-durlesbach-nach-mochenwangen/
@prologic@twtxt.net Thanks. It actually turned out to work really well. And I am writing this post from it.
Got yt2009 working on Windows XP. This is on real hardware.
Got yt2009 working on Windows XP. This is on real hardware.
I am testing my twtxt client called twtxtk. It is ai coded but it works well because I disliked how jenny was and I wanted a local only client. Its made it python with tkinter.
Haha, indeed:
- Initial
uptime: A bit over 1 minute.
- Changing to serial console, running
uptimeagain: Itās down to 7 seconds.
- Changing back to the VGA console: Itās again down to 1 second.
This really doesnāt track the actual uptime, it just happens to āmostly workā. (Like a lot of things in DOS.)
Made a little program to print the systemās uptime on DOS, OS/2, and Windows NT:
https://movq.de/git/retrouptime/
(Release pending.)
This was pretty easy to do on Windows, a bit harder on OS/2 (because documentation is scarce), and quite the mess on DOS. DOS doesnāt explicitly keep track of the systemās uptime, so you have to resort to tricks like āgive me the mtime of stdinā, which probably works ⦠Yeah.
@david@daiwei.me I did was trying a little something since CF wonāt proxy anything other HTTP(s) and ended up Borking my instance. Things should be working by now.
@movq@www.uninformativ.de One more human to add, I just got to read it. Cool stuff, coloring in these hexdumps by hand must have been a ton of work, my goodness. Much appreciated, though. :-)
Are you teaching or learning #Python? Have you heard about #ParsonsProblems?
I have made some Parsons puzzles with visual output, check it out:
https://abav.lugaralgum.com/python-parsons-visual/
Support my work! https://abav.lugaralgum.com/support-me/
If you want to work with typography in 3D, you can try out these āFab fourā #Python libraries: #numpy, #shapely, #trimesh & #py5 :D
You know that Iām āPrinzessin Müllabfuhrā, but the English translation isnāt that great.
So, Iām going by āPrincess Dumpsterfireā now.
(Iām forced to use this shit at work.)
@david@daiwei.me Iāve added in a little exception to the WAF, if it doesnāt work (at least until I figure why the hell are twtxt-app requests getting caught up in my Known Bad Actors rule in the first place), then Iāll have to tear the whole thing down and redo it from scratch.
Works here too
/dev/ulpt0. The netbook doesnāt have a parallel port, so this must be done over USB. NetBSD.escp was created by a little custom ESC/P converter written in C. š„³
@movq@www.uninformativ.de Ah, I see. I should start working from my bed. ;-)
Never tried Gentoo. Maybe something to look into.
@david@daiwei.me Works for me. š¤
/dev/ulpt0. The netbook doesnāt have a parallel port, so this must be done over USB. NetBSD.escp was created by a little custom ESC/P converter written in C. š„³
@lyse@lyse.isobeef.org Yeah, the partition stuff with disklabels is what Iām absolutely not used to. I need to invest more time learning this. Not just using it, but how and where is it represented on disk and all that.
I carry my notebook/netbook around a lot. š Watching movies in bed, for example.
I think Iāll stick with NetBSD for a while. It works surprisingly well, itās new stuff to explore, itās fast, and then thereās this:
https://mastodon.sdf.org/@netbsd/112446618914747900
Gentoo (https://wiki.gentoo.org/wiki/Project:Council/AI_policy) might be another idea, but Iām afraid that the little netbook might be too slow for that? Or are there binary packages? No idea, itās been ages since I touched this distro.
(Regarding Linux in general ⦠we all know what Linus said. Iām not sure where this project is heading.)
@athanasia@twtxt.net The main problem is that I donāt front mbox.blue with my Edge infra that I front the rest of my infra with. So mbox.blue is kind of independent if that makes sense. It has nothing in front of it to protect anything. So I would just put a simple Caddy PoW at itās reverse proxy and call it a day if that works for you? ā I think Iāll make this per-box/per-user configurable too?
@athanasia@twtxt.net I actally have my own PoW that I can put in front of mbox.blue if you like. It works very similarly to Anubis. I do have to warn you however, I donāt really think these PoW techniques are very effective IMO. Also re Guestbook message, sure, one secā¦
And here some photos of the crazy kitchen we had at our glamping trip. Of course, it was waaaaaaaaaaaaay oversize. Itās typically used to feed several hundred people, not just only 70ish. Although it was really fun to work in, cleaning the whole thing took an entire day. We completely underestimated this.
https://lyse.isobeef.org/2026-09-07-willy-brandt-zeltlagerplatz-kueche1/
Something felt definitely wrong, I got up much earlier during the camp than when I have to work. Typically, I woke up beween 6 and 7 because I really had to go to the loo. There was almost always somebody already awake from the kitchen teammates or leaders. So, I always decided to not return to bed. When I was the very first one, I turned on the coffee machine and water kettle to the delight of the others and five minutes later, another person arrived at the kitchen. As a bonus, we sometimes got to enjoy the sunrises, like this one: https://lyse.isobeef.org/2026-09-07-morgensonne/
@itsericwoodward@itsericwoodward.com Then by all means, follow the instructions at https://git.mills.io/prologic/parley and setup your own instance on your own domain. Itās partly inspired by Twtxt/Yarn.social and Salty.im ā in at least the way teh DNS discovery and WKID works. Once your instance is up and running and youāve gone through the /setup and created yourself an account (or seti it up with an appropraite ODIC IDP) try something like /msg james@mills.io Hey! at which point you should automatically start peering with my instance. You should then be able to /join #lobby1 (a globally federated channel already across 2 instances so far). š¤
I have (finally) built a fully e2e working purely decentralised and federated IRC-compatible chat server. It is currently a PoC, but itās already working quite well. Itās inspired partly by the work we did with Salty Chat in terms of Discovery and Federation. Some screenshots of a normal IRC client irssi showing off how it works in a local e2e setup:

git, curl and a web server of some kind.
For the curious, this is fully documented with roleplay Alice/Bob. I was going to test this with @david@daiwei.me but we both got busy, but now Iām on holidays from work for a month so š¤·āāļø š¤£
āIf you only pay attention to how things work, youāll be screwed when they failā ā Cory Doctorow
Um relato dos meus sentimentos muito misturados a respeito do #Manjaro e minha simultânea incompetência e competência:
Nas Ćŗltimas semanas tava tendo que ābootar de um snapshotā no meu micro do dia a dia, hoje finalmente quebrou tudo e nĆ£o conseguia mais bootar. AĆ, tome de bootar de um pendrive, e acessar umas anotaƧƵes que eu tenho pra fazer o chroot⦠acho tudo muito difĆcil pq tenho que decriptar o hd, e montar partiƧƵes diversas, nĆ£o manjo exatamente o que estou fazendo, sigo a receita anotada, muitos passos.
Em seguida, reinstalar kernels com pamac -S linuxXX e mhwd-kernel, reinstalar o grub, e usar o mkinitcpio -P pra recriar as āimagensā dos kernels usadas no boot. NĆ£o sei o que resolveu exatamente o problema (tinha tentado esse mkinitcpio -P faz algumas semanas, sem ser bootando do pendrive, e nĆ£o tinha funcionado)
De um lado sou grato por ter conseguido fazer as coisas funcionarem, grato pelo esforƧo de muitas pessoas voluntĆ”rias fazendo o Manjaro ser teoricamente āmais fĆ”cilā pra algumas pessoas, por outro lado acho tudo muito difĆcil e nĆ£o consigo imaginar outras pessoas do meu convĆvio fazendo essas coisas, nem eu consigo entender o que estou fazendo!
SerÔ que não teria como ser mais fÔcil?
āIf you only pay attention to how things work, youāll be screwed when they failā ā Cory Doctorow
Um relato dos meus sentimentos misturados a respeito do #Manjaro e minha simultânea incompetência e competência:
Nas Ćŗltimas semanas andei ābootando de um snapshotā no meu micro do dia a dia, e hoje finalmente quebrou tudo e bootava mais. AĆ, tome de bootar de um pendrive, e acessar anotaƧƵes que eu tenho pra fazer o chroot⦠acho tudo muito difĆcil pq tenho que decriptar o hd, e montar partiƧƵes diversas, nĆ£o manjo exatamente o que estou fazendo, sigo a receita anotada, muitos passos.
Em seguida, reinstalei kernels com pamac -S linuxXX e mhwd-kernel, reinstalar o grub, e usei o mkinitcpio -P pra recriar as āimagensā dos kernels pro boot. NĆ£o sei o que resolveu exatamente o problema (tinha tentado esse mkinitcpio -P faz algumas semanas, sem ser bootando do pendrive, e nĆ£o tinha funcionado)
De um lado sou grato por ter conseguido fazer as coisas funcionarem, grato pelo esforƧo de muitas pessoas voluntĆ”rias fazendo o Manjaro ser teoricamente āmais fĆ”cilā pra algumas pessoas, por outro lado acho tudo muito difĆcil e nĆ£o consigo imaginar outras pessoas do meu convĆvio fazendo essas coisas, nem eu consigo entender o que estou fazendo!
SerÔ que não teria como ser mais fÔcil? SerÔ que um dia vou achar fÔcil?
āIf you only pay attention to how things work, youāll be screwed when they failā ā Cory Doctorow
Um relato dos meus sentimentos misturados a respeito do #Manjaro e minha simultânea incompetência e competência:
Nas Ćŗltimas semanas andei ābootando de um snapshotā no meu micro do dia a dia, e hoje finalmente quebrou tudo e nĆ£o bootava mais. AĆ, tome de bootar de um pendrive, e acessar anotaƧƵes que eu tenho pra fazer o chroot⦠acho tudo muito difĆcil pq tenho que decriptar o hd, e montar partiƧƵes diversas, nĆ£o manjo exatamente o que estou fazendo, sigo a receita anotada, muitos passos.
Em seguida, reinstalei kernels com pamac -S linuxXX e mhwd-kernel, reinstalar o grub, e usei o mkinitcpio -P pra recriar as āimagensā dos kernels pro boot. NĆ£o sei o que resolveu exatamente o problema (tinha tentado esse mkinitcpio -P faz algumas semanas, sem ser bootando do pendrive, e nĆ£o tinha funcionado)
De um lado sou grato por ter conseguido fazer as coisas funcionarem, grato pelo esforƧo de muitas pessoas voluntĆ”rias fazendo o Manjaro ser teoricamente āmais fĆ”cilā pra algumas pessoas, por outro lado acho tudo muito difĆcil e nĆ£o consigo imaginar outras pessoas do meu convĆvio fazendo essas coisas, nem eu consigo entender o que estou fazendo!
SerÔ que não teria como ser mais fÔcil? SerÔ que um dia vou achar fÔcil?
@movq@www.uninformativ.de Ahh, no you can. Much like what weāve built here with Twtxt / Yarn. Iām building a spec, clients can implement the spec, or you can ya know, just curl and git your way through. Iāll link the spec soonā¢, just need to keep refining and testing and make sure this actually works properly š
@movq@www.uninformativ.de So the way this works in my design/prototype is this. You fork my repo in the app, it clones it to your own forge, follows my instance and itās repo for updates and ping my instance to indicate āyouāve forked meā. Then when you publish changes, I can see them by pulling your instanceās feed. It all works on the same plain text principles of Tstxt itself. The feeds are āpullā-based with push-based āpingsā on things like āsomeone forked your repoā, āa new issue has been raised against your repoā, etc.
Literally just a day after Elon came out with his legal threats towards all of Nitter and people like me complained about it, Open AI decides to no longer work with Cursor (acquired by Space X), explicitly saying itās because Elon wouldnāt stop breaking their signed contracts and scraping (distilling) their models, behind their back.
https://openai.com/index/our-decision-on-cursor-following-its-acquisition-by-spacex/
This is not even the only instance of this happening, many mentioned having similar problems with Elon in the past. Not too long ago Kylie Robison shared a rumor xAI engineers were banned from using Anthropic models through Cursor, because of their scraping, though they seem to have later patched things over with Elon, when they had to start renting his data centers.

@movq@www.uninformativ.de Humidity was through the sky. We had two thunderstorms pass by. One at 06:00 and and another one this arvo.
Somebody hooked this presumably plastic moon on the tree bark. Not sure why or what the reason is. Letās just call it art. It looked weird and so I thought that it might poke other peopleās interests as well. Worked out great. Got another question about it, too. ;-)
Started doing āFraktur Freitagā last week on Mastodon, and why not post it here as well. (āBlackletter Fridayā? Doesnāt work in English. š¤Ŗ)
I want to make this a weekly thing, but I obviously cannot guarantee it. š
Awful 33°C today. But I had to move, no matter what. So, I went outside. At first, the sun was out a bit. It was brutal. Later it vanished behind the clouds. But the humidity was still through the roof.
I watched the corn harvest I came across. Dusty as hell, but it was great fun observe the machineries work.
Going up my backyard mountain, there werenāt many people around. I was pleasantly surprised. However, the smaller hill below was rather crowded. Many people with picnic mats, enjoying their dinner, painting A3 love letters, claiming all available benches, taking wedding photos, walking their dogs, etc.
The public barbecue site at the summit is still closed due to the ongoing fire hazard. I found it rather funny to see a fire extinguisher ready to go next to it. The bread and cake smell disclosed that the Mountain Baking Boys were active. The large oven right next to the BBQ was still going strong.
Similar here š„³ 9 days then iām off for 3 weeks. but really 20 working days!
Had no clue @prologic@twtxt.net has his own computer mouse brand now, straight up giving them away, for under $3 a piece.
I got one and well pleasantly surprised, especially for the price. It fits perfectly in the hand, decent rubber, weighs nothing, clicks very silently. The scroll wheel is where you can feel some of the cost cutting, itās pretty wonky, but good enough.
Classic cheap thin long cable, you better like 1600 DPI, cause thereās no button to change that. Sensor is the usual red light, but works on all surfaces, bedsheets included. Gliders are small and not around the sensor, but at this weight, that makes next to no difference.
Decent 8/10 option

Had no clue @prologic@twtxt.net has his own computer mouse brand now, straight up giving them away, for under $3 a piece.
I got one and well pleasantly surprised, especially for the price. It fits perfectly in my hand, decent rubber, weighs nothing, clicks very silently. The scroll wheel is where you can feel some of the cost cutting, itās pretty wonky, but good enough.
Classic cheap thin long cable, you better like 1600 DPI, cause thereās no button to change that. Sensor is the usual red light, but works on all surfaces, bedsheets included. Gliders are small and not around the sensor, but at this weight, that makes next to no difference.
Decent 8/10 option

@movq@www.uninformativ.de I usually donāt listen to metal where the singers scream. There are only very, very few bands where I find that actually pleasing.
Two decades ago or so, we young supervisors compiled ourselves a cassette for our forest recreation week. One of us had an old ruggedly built radio with a cassette deck powered by a bunch of large Baby (?) batteries. One side had āworking musicā which we played back while working in the evenings and night, e.g. gathering firewood in a handtruck for the campfire and things like that.
I used something by either Finntroll or Turmion KƤtilƶt for the āwakeup musicā side in the morning. The kids slept at home, but there were always some supervisors sleeping at the camp. The SĆT, the Standard-Ćbernachtungsteam, consisted of mostly young folks, about sixteen to early twenties. It was completed by wiser people in their fourties. Each morning, metal blasted through the dining tent that we converted into a sleeping tent. :-) Good times!
@movq@www.uninformativ.de I actually didnāt know that and just listened to it. There are a few nice songs, but in general, itās too boring to me. Iām missing the rock and metal elements for sure. Some of the calm songs might work to relax in a sauna or so. But I find the āwind noiseā rather annoying.
@smmbear@twtpub.com Hey š Welcome to Yarn.social / Twtxt š Just in case you are not ware a) spam is not really tolerated by this community and b) doesnāt work anyway, youāll just be ignored, and there are exactly zero ways to promote spam or advertise on this social system ā on purpose.
@murad@twtxt.net Yes things do work š¤£
Whatās interesting here⦠Which is the interesting thing about Mu is the dual runtime. So the above solution for Euler Problem 9 finds the solution in ~429ms with the Go VM and ~327ms natively compiled to darwin/arm64. Not bad for a language I havenāt really done any optimization work on yet (correctness first obviously).
It is such a nice feeling that Mu is such a capable little language š And I decided to write code code in Mu by hand š¤ haha 𤣠and start solving Project Euler problems, like Problem 8 which works out to be a nice elegant solution in Mu:
#!/usr/bin/env mu
// Largest Product in a Series
import "fp"
import "sys"
fn usage() {
print("Usage: cat |", args()[0], "<n>")
}
fn products(xs) {
return fp.reduce(xs, 1, fn(x, y) {
if y == nil {
return x
}
return x * y
})
}
fn main() {
if len(args()) < 2 {
usage()
exit(1)
}
s := must(sys.read_all(0))
if len(s) == 0 {
usage()
exit(1)
}
n := must(int(args()[1]))
r := fp.max(fp.map(fp.sliding(fp.map(s, int), n), products))
print(r)
}
main()
I am a bit split on this, donāt think thereās any real use for AI in things like art, at absolute most getting a reference to compare with multiple non-AI ones, or possibly some animation in between frames, if it ever gets better at making those. Would not rely on it for any of my personal projects, more than maybe a quick search that would have previously been done on Stack Overflow, but if I work somewhere and they demand it be used similarly to how it is described on this site, considering the current IT job market, Iād probably take the slop bullet, over being unemployed.
Obviously even in that case, Iād only do this to generate code I can understand, improve and review. Iām definitely not advacating people just put their feet up on the table and let some random combination of āAI agentsā, vibecode their entire codebase.
I hate having my website offline, so I tried to bring it back in a honey-potted version: āAIā agents get served article versions with inverted meaning, like ādoā replaced with ādonātā and so on.
It didnāt work. Claude noticed it and āfixedā it back to the original version. When I asked it, āwait, nowhere on the page does it say $string, check againā, it said:
This is the creepiest shit ever. Silently āfixingā stuff behind my back is the epitome of untrustworthiness.
Open the bay doors, HAL.
I donāt like using Instagram and I was happy that maybe I could automate posting my daily sketches there using a #python script with the #instagrapi library.
I tried posting a single image as a test yesterday and it worked great in the first attempt, yay! :)
Today my account was blocked as Meta figured my account might have been invaded! :(
So there goes my excitement about automated posting on Instagramā¦
I really do find it difficult to follow anyone that basically posts to a wall, or doesnāt follow back. Itās utterly pointless not being able to have a conversation, like basically, at all. Maybe itās not even anyoneās fault? Maybe just a sucky client that doesnāt understand how User-Agent works in Twtxt Discovery? š”
I kind of feel that I finally found a way to visualize and maybe explain to myself and others how a #numpy #meshgrid works⦠Letās see how long this feeling lasts š
(⦠I should draw some diagrams from this insightā¦) #python #education
@david@daiwei.me Sorry, I canāt do this anymore. A large part of my work (text, code, thoughts, ā¦) of the last 20-25 years has been stolen and is now being sold at rampant prices to idiots who then complain about me being a backwards bitch (I get to hear this every single day). Everything I say and do in public is being abused.
Fuck that, Iām out.
@david@daiwei.me Thanks, mate! I just finished my two full version marking gauges. And Iām rather pleased with them, I think they turned out great if I say so myself.
https://lyse.isobeef.org/tmp/streichmass-mit-messerrad/
The beech fences (80 and 100mm long) were part of a former table frame that I cut down. I plugged the dowel holes with, well, dowels. The horrific looking one was the stuck original one, though. Luckily, itās a hell lot worse on camera than in person. If you take a close look, youāll also be able to see the large but slight chamfers one one side each that I just left alone.
I really like beech wood. It looks beautiful, is rather heavy (at least in comparison to spruce which I typically use) and thus rock solid, is also a blast to plane and the list goes on. I sanded it with 180 grit and itās smooth as a babyās bottom.
The 25mm beech round stocks that house the brass knurled nuts are now roughly 4cm long. Thatās one thing I wanted to change right after my first experience. If they were rounded or chamfered more, it would probably be even nicer for the fingers when using the marking gauge. Theyāre sunken in roughly 3mm in the fences. A forstner bit made quick work. This simplified alignment during glue-up a lot. Will definitely do that again if I happen to build more. I could fully concentrate on the grain orientation and it didnāt shift around.
Just like in the prototype, I used 8mm aluminium solid round bar again for one of the marking gauges. Itās also about 15cm in length. I figure thatās enough. The bought marking gauge has a twenty-something and some change steel rod. So far, all my markings didnāt even exceed probably 50mm.
I found the 8mm brass pipe laying around on the workshop. Didnāt know anymore I had it for ages. Unfortunately, the wall thickness is below a millimeter, so my 6mm wooden dowels are sliding in there. Thus, I put 8mm dowels in my drill chuck and reduced the diameter with a rasp. I went a tiny bit too far, the press fit is on the loose side. When drilling with a 2mm drill (I did that on purpose to hopefully cause the dowel to expand a bit more in the pipe, typically the tap hole for M3 is 2.5mm) and tapping M3, the downsized and glued in dowel slipped down the pipe. Should have used construction adhesive or something along those lines. Anyway, I might replace it with a solid one. I consider this a half-successful experiment. I fear that an unfavorable grain direction might pull out the cutting wheel during use. Letās see.
The finish of all three is boiled linseed oil. It looks nice, but oh by, this smell. I really dislike it. My hands stink even after washing them several times. I still got several liters left, so I have the dubious joy to use it on many, many other projects to come.
Oh, one last thing. Didnāt manage to drill the tiny holes for my M3x16 bolts perfectly in center like for the prototype. Theyāre a tiny bit off. Also, on the longer fenced marking gauge, the hole for the knurled nut is a little to the side and at an angle. No idea how I messed this up. Luckily, itās just a look thing but doesnāt impair use.
Bwahahaha, these security folks have a great sense of humor! :-D Got a phishing test e-mail disguised as an overdue anti-phishing training e-mail:
We receive these test phishing e-mails every now and then at work. When you follow the links and log in at the fake login, you probably get assigned another (real) training.
When I got this e-mail, I immediately thought of such a test. Since I actually do have some stupid training deadlines coming up soon, I wasnāt 100% sure, but still doubted that this was one of them. To make the timing even better, in the team meeting last week, our bosses reminded us to complete outstanding trainings before the deadlines. Ideally well in advance. Notifications about deadlines coming closer are sometimes not only sent to the individuals but also to the bosses and their bosses. And then things can get out of hands when somebody doesnāt read the e-mails properly and mistakes them for deadline exceeded reports.
Anyway, the URL also looked kinda legit. It really doesnāt help a single bit that domain names change all the fucking time. So, still with the test program in mind, I thought, I just give it a quick shot out of curiosity. Since I just had logged in before, the empty SSO username field was totally obvious then. Looking at the e-mail headers confirmed that this was indeed one of securityās field checks. :-)
@bender@twtxt.net probably just too busy with real life and work to interact with us plebs š¤£
So #flameshot stopped working for me on #manjaro #xfce, any suggestions?
@GabesArcade@gabesarcade.com Probably. How do you want this to work? An āExportā button to export all your settings in some form?
Dunno if anyone will find this interesting⦠But some ~6 months or so ago I experimented briefly with creating a whole bootloader + kernel + userland ā Basically an entire OS in the Mu programming language (which as you know I also designed and created) ā 6 months later Iāve worked on it some more after spending the last week working on improvements to Mu itself, which is now able to compile itself with its own Mu implemented compiler and now have an os/arch backend called muos/amd64 that boots into a running shell, with a tiny little vfs, UNIX-like semantics, syscalls, read/write, etc. It works pretty nicely, and aside from a small Assembly ānucleusā, most of the Kernel and Userspace is written in Mu.
@prologic@twtxt.net Seems to work? š§
@klaxzy@klaxzy.net Hey, sounds exactly like the company I work(ed) for.
@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.)
@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
@thecanine@twtxt.net Always love your work ! š
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.
@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.
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 @lyse@lyse.isobeef.org Oh, I wish it was for work. Iād usually abstain from going if donāt get to choose either the location, or the company. But, both? HEeeeeLL No!! š
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.
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 š¤£
@aelaraji@aelaraji.com Thatās totally fine if you work at the beach. :-)
@david@daiwei.me Not sure if you only mean the code segments or in general. In theory, a general darker text color for read messages would probably work. The thing is that regular white on black is quite standard. In Newsboat, new articles are red (I opted for yellow here) and read ones white. I found that useful and kinda copied it for tt.
In theory, itās Gitea anyway. So it should work.
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.
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.
Just depends, if I get overwhelmed and canāt keep up with demand, Iāll insist on a Gitea Issue(s) so I can organise the work.
@david@daiwei.me I agree, the App (https://twtxt.app) really does work quite nicely š
Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tviewās established pattern. Youāve got an InputHandler(), that is implemented using WrapInputHandler(ā¦). It typically then directly implements the switching logic depending on the key press. Something like this:
func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// WrapInputHandler allows for intercepting key events with SetInputCapture(ā¦)
// from the outside for customization. This handles the default key bindings.
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
w.scrollUp()
return // we already handled the event, stop processing
case 'j':
w.scrollDown()
return
}
}
}
// We didn't handle the key event. Maybe the parent
// widget knows what to do with it.
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
})
}
From the outside, you can intercept and either stop or continue the widgetās original key handling with a potentially rewritten key event using SetInputCapture(ā¦):
w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyUp:
// Rewrite the event, so the "cursor up" key is an alias
// for the vim key binding "k", that is handled by the
// wrapped input handler above. (I know, I know, this is a
// completely unrealistic example, why would anyone use
// cursor keys when there are vim key bindings available?!)
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'q':
app.Stop()
// we already handled the event, do not pass it
// to the wrapped input handler above
return nil
case 'r':
toggleMessageReadStatus()
return nil
}
}
}
// we didn't handle the event, pass it to the wrapped
// input handler above
return event
}
Since they all expect a single key, Iāve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it canāt transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widgetās KeyBindings instance, but not pretty. You always have to keep this in mind.
With the KeyBindings, it will look like that:
type Widget struct {
parent tview.Primitive
// make it available to children or the outside either by
// direct field access or by providing a getter method
KeyBindings *bind.KeyBindings
}
func NewWidget() *Widget {
w := &Widget{KeyBindings: &bind.KeyBindings{}}
w.KeyBindings. // default key bindings
Bind0(bind.KeySequence('k', w.scrollUp).
Bind0(bind.KeySequence('j', w.scrollDown)
return w
}
func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// also note the missing support for focus transfer at the moment
event = w.KeyBindings.Capture(event)
if event == nil {
return
}
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
}
}
And then from the outside, or in a child widget:
w := NewWidget()
w.KeyBindings. // additional or customized key bindings
Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind0(bind.KeySequence('r'), toggleMessageReadStatus)
When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:
textView := tview.NewTextView().
SetWordWrap(true).
SetText("ā¦")
SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
}).
Capture)
I need to sleep on this some more.
Also, writing very long messages like this one is really not all that fun in ttās editor. I should absolutely provide a way to shell out to vim.
(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, thatās a big win!) Good night!
@david@daiwei.me The one with www is correct: https://www.uninformativ.de/twtxt.txt is the canonical URL used in the url = metadata field. (For historical reasons, it also works without www and even with http.)
@balloonfu-sen@yarn.girlonthemoon.xyz Such tilde(s), etc, could in theory just run a twtd instance per user, or if I was convinced enough to make twtd also multi-user capable (optionally) that would also work. But many ~tilde(s) barely implement the Twtxt specs we continue to build and improve (albiet slowly and carefully).
@balloonfu-sen@yarn.girlonthemoon.xyz That should work. LMK if you run into any issues!
@david@daiwei.me Ta, I continued my fun with studying the tcell and cbind code bases for key bindings. My plan is to eventually not only support custom key bindings in the tt configuration file, but also to enable multi-key sequences, such as gg to jump to the top of a list/tree. Or use other vim-like navigation movements like 7j or 25gg etc.
And it turns out there are only a hand full oft tcell/cbind version combinations that work together. Only if all stars align, thereās chance of success. I will probably end up pulling cbind in to simplify my life. There are situations where tcell.EventKeyās triple of key, modifiers and rune are not all that intuitive to me. Letās see.
@bender@twtxt.net All the other ones worked but this broke? Whatās different here? To which twt hash should this be a reply? š¤
Friday, my love, we meet again. I am going to take you to lunch, and pamper you. I will led you to believe you are the only one in my life, but then, as the working day sunsets, I shall leave you at the door, like a stood up girl by her prom date.
Weekend babies, here we come! š
@movq@www.uninformativ.de tell me about it! I try to enjoy the time I have available, regardless of being working time, or not. I admit it is quite hard!
@aelaraji@aelaraji.com At least your feed works as well your avatar š
@arne@uplegger.eu You have Matrix at work? No Teams, Google Chat, Slack, Discord, whatever, but Matrix? Really? Where do you work, is this Socialist Russia?!