Searching txt.sour.is

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

@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.

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

@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.

⤋ Read More

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.

⤋ Read More

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.

⤋ Read More

šŸ‘‹ 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 šŸ™‡ā€ā™‚ļø

⤋ Read More

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!

⤋ Read More

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.

⤋ Read More
↳ In-reply-to » @lyse I’m way too clumsy to do actual craftsmanship. šŸ˜– I had this janitor / delivery driver job once, that was great, and I’d love to do that again. Doesn’t exist anymore, though, and paid like shit.

@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.

⤋ Read More

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. šŸæ

Image

Image

Image

Image

https://movq.de/v/fa5dd44cab/mount%2Dnosound.mkv.mp4

⤋ Read More
↳ In-reply-to » I follow @aelaraji’s feed, but it never updates. šŸ¤” Manually fetching individual twts works, though. Do you do any aggressive filtering or something like that? šŸ¤”

@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. 🄳

⤋ Read More
↳ In-reply-to » @movq People have not been fired over here. But I fully expect this to happen, too. Non-techies soldering together their own production shit is only consequent. I was actually wondering when this will happen. Product owners don't need anyone else anymore, they can just be one-man shows. That's what the AI bros jerk off to.

@lyse@lyse.isobeef.org

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.

⤋ Read More

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.

⤋ Read More

(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 😱

⤋ Read More

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/

⤋ Read More
↳ In-reply-to » I made a write up about how I came about wanting my own twtxt client. Now my twtxt client called twtxtk is released. Its a python tkinter client. The download is there as well with the source (its a python file). https://jasonsanta.xyz/blog/twtxtk-a-new-twtxt-client

@prologic@twtxt.net Thanks. It actually turned out to work really well. And I am writing this post from it.

⤋ Read More
↳ In-reply-to » @lyse

Haha, indeed:

Image

  1. Initial uptime: A bit over 1 minute.
  2. Changing to serial console, running uptime again: It’s down to 7 seconds.
  3. 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.)

⤋ Read More

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.

Image

Image

Image

⤋ Read More

You know that I’m ā€œPrinzessin Müllabfuhrā€, but the English translation isn’t that great.

So, I’m going by ā€œPrincess Dumpsterfireā€ now.

Image

(I’m forced to use this shit at work.)

⤋ Read More
↳ In-reply-to » (#engqwbqkimbf) @aelaraji He's asleep by now šŸ˜…

@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.

⤋ Read More
↳ In-reply-to » Just some light Sunday afternoon entertainment: Printing from NetBSD on the dotmatrix printer by dumping data to /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.

⤋ Read More
↳ In-reply-to » Just some light Sunday afternoon entertainment: Printing from NetBSD on the dotmatrix printer by dumping data to /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.)

⤋ Read More

@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?

⤋ Read More

@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…

⤋ Read More
↳ In-reply-to » I've been away with the scouts in our district summer camp. The nearly two weeks were absolutely amazing, mentally a great vacation. On the other hand, physically not so much. But I've still got Monday to recover from my holiday. :-)

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/

⤋ Read More
↳ In-reply-to » I've been away with the scouts in our district summer camp. The nearly two weeks were absolutely amazing, mentally a great vacation. On the other hand, physically not so much. But I've still got Monday to recover from my holiday. :-)

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/

⤋ Read More
↳ In-reply-to » @itsericwoodward Not really no 🤣 Did you want to join us and setup your own instance and join the growing aprty? It's turning out to be quie neat actually šŸ˜…

@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). šŸ¤ž

⤋ Read More

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:

⤋ Read More
↳ In-reply-to » Does anyone have time this weekend to manually test and validate and prove out this spec I'm calling Gitxt? A Twtxt-inspired purely decentralised Git federation/forge? šŸ¤” Hit me up! You need only 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 šŸ¤·ā€ā™‚ļø 🤣

⤋ Read More

ā€œ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?

⤋ Read More

ā€œ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?

⤋ Read More

ā€œ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?

⤋ Read More
↳ In-reply-to » @prologic Hmm. šŸ¤”

@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 šŸ˜…

⤋ Read More
↳ In-reply-to » @prologic Hmm. šŸ¤”

@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.

⤋ Read More

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.

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

@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. ;-)

⤋ Read More

Started doing ā€œFraktur Freitagā€ last week on Mastodon, and why not post it here as well. (ā€œBlackletter Fridayā€? Doesn’t work in English. 🤪)

Image

Image

I want to make this a weekly thing, but I obviously cannot guarantee it. šŸ˜…

⤋ Read More

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.

https://lyse.isobeef.org/waldspaziergang-2026-08-27/

⤋ Read More

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

⤋ Read More

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

⤋ Read More
↳ In-reply-to » @lyse Huh, didn’t expect that. :-D

@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!

⤋ Read More
↳ In-reply-to » @lyse I take it you also know their acoustic album ā€œVisor om Slutetā€? I love that one. šŸ˜

@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.

⤋ Read More

@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.

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

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).

⤋ Read More

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()

⤋ Read More
↳ In-reply-to » The author of the Xfce Wayland compositor on LLMs:

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.

⤋ Read More

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:

Image

This is the creepiest shit ever. Silently ā€œfixingā€ stuff behind my back is the epitome of untrustworthiness.

Open the bay doors, HAL.

⤋ Read More

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…

⤋ Read More

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

⤋ Read More

@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.

⤋ Read More
↳ In-reply-to » I finally built a prototype of a marking gauge with a cutter wheel out of some scraps.

@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.

⤋ Read More

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:

Image

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. :-)

⤋ Read More

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.

https://git.mills.io/prologic/muos

⤋ 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 » @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
↳ 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

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 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

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

@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.

⤋ 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

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

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.

⤋ Read More

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!

⤋ Read More

@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.

⤋ Read More

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! šŸ˜‚

⤋ Read More
↳ In-reply-to » Anyone using XMPP? I've been hearing a lot about how it is the OG messaging protocol. That G00gle Talk used to use it as a back-end, that FB messanger and w_hatsapp use some modified version of it or something; And that setting up a server (or even using a public one) would be a better alternative to the aforementioned apps, so I did. Now the question is: "Where the Fu__ are my video calls at!!? 🤣" ... The protocol supports videoconferencing and I'm yet to find a decent Desktop/Mobile client that implements it. I wish I knew enough Code-Fu to contribute/help implement some, somewhere.

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

⤋ Read More