Another AI rant:
One of the “key features” of LLMs is that you can use “natural language”, because that is supposed to be easier than having to learn a programming language. So, when someone says to me, “I automated this process using AI!”, what they mean is: They have written a very, very large Markdown document. In this document, they list what the AI is supposed to do.
In prose.
This is a complete disaster.
Programming and programming languages have one crucial property: They follow a well-defined structure and every word has a well-defined meaning. That is absolutely brilliant, because I can read this and I can follow the program in my head. I can build a mental model. I can debug this, down to the precise instructions that the CPU executes. This all follows well-defined patterns that you can reason about.
But with these Markdown files, I am completely lost. We lose all these important properties! No debugging, no reasoning about program flow, nothing. It’s all gone. It’s a magic black box now, literally randomized, that may or may not do what you wanted, in some order.
People now throw these Markdown files at me … and … am I supposed to read this? Why? It’s completely random and fuzzy.
Sadly, these AI tools are good enough to be able to mostly grasp the authors intentions. Hence people don’t see the harm they cause, because “it works”.
We already have a ton of automations like this at work: Tickets get piped through an LLM and these Markdown files / prompts determine what will happen with the ticket, and maybe they trigger additional actions as well, like account creation or granting permissions. All based on fuzzy natural language – that no two humans will ever properly agree on.
Jesus Christ, we’re now INTENTIONALLY bringing the ambiguity of legal texts and lawyers into programming.
Using natural language is NOT easier than using a programming language. It is HARDER. Have you people never read a legal contract? And that stuff can STILL be debated in a court room.
I can’t begin to comprehend why we, tech folks, push this so hard. What is wrong with you? Or me?
(And, once again, we’re ignoring other factors here. LLMs use a ton of energy and ressources, that we don’t have to spare. It’s expensive as fuck. It doesn’t even run locally on our servers, meaning we give all these credentials and permissions to some US company. It’s insane.)
@prologic@twtxt.net that would work too. Not just for this adventure, but for the ones to come! Do it, do it!
@lyse@lyse.isobeef.org AI result ahead, feel free to ignore.
I “asked” the AI at work the same question out of morbid curiousity. It “said” that SQLite converts that integer to floating point internally on overflows and then, when converting back, the x86 instruction cvttsd2si will turn it into 0x8000000000000000, even if the actual floating point value is outside of that range. So, yes, it allegedly actually saturates, as a side effect of the type conversion.
I couldn’t find anything about that automatic conversion in SQLite’s manual, yet, but an experiment looks like it might be true:
sqlite> select typeof(1 << 63);
╭─────────────────╮
│ typeof(1 << 63) │
╞═════════════════╡
│ integer │
╰─────────────────╯
sqlite> select typeof((1 << 63) - 1);
╭──────────────────────╮
│ typeof((1 << 63) ... │
╞══════════════════════╡
│ real │
╰──────────────────────╯
As for cvttsd2si, this source confirms the handling of 0x8000000000000000 on range errors: https://www.felixcloutier.com/x86/cvttsd2si
The following C program also confirms it (run through gdb to see cvttsd2si in action):
<a href="https://txt.sour.is/search?q=%23include">#include</a> <stdint.h>
<a href="https://txt.sour.is/search?q=%23include">#include</a> <stdio.h>
int
main()
{
int64_t i;
double d;
/* -3000 instead of -1, because `double` can’t represent a
* difference of -1 at this scale. */
d = -9223372036854775808.0 - 3000;
i = d;
printf("%lf, 0x%lx, %ld\n", d, i, i);
return 0;
}
(Remark about AI usage: Fine, I got an answer and maybe it’s even correct. But doing this completely ruined it for me. It would have been much more satisfying to figure this out myself. I actually suspected some floating point stuff going on here, but instead of verifying this myself I reached for the unethical tool and denied myself a little bit of fun at the weekend. Won’t do that again.)
Disclaimer: Can’t guarantee that I’m fully awake and I’m being trained at work not to use my brain anymore, so maybe this is complete bullshit. 😪🧟♀️
It says here that SQLite uses signed integers:
https://sqlite.org/datatype3.html
In pure bits, 1 << 63 would be 0x8000000000000000, but as a signed value, it gets interpreted as -9223372036854775808. Subtracting 1 yields -9223372036854775809 – but that doesn’t fit in 64 bits anymore. It’s possible that SQLite doesn’t want to wrap around but instead saturates? Haven’t checked. 🤔
With 62 bits, there is enough room.
With 1 << 64, I have no idea how SQLite wants to handle this, because this should immediately trigger a warning, because it doesn’t fit right away. Maybe it gets truncated to 0?
sqlite> select printf('0x%x', 2 * (1 << 64));
╭──────────────────────╮
│ printf('0x%x', 2 ... │
╞══════════════════════╡
│ 0x0 │
╰──────────────────────╯
sqlite> select printf('0x%x', 0 - 1);
╭──────────────────────╮
│ printf('0x%x', 0 ... │
╞══════════════════════╡
│ 0xffffffffffffffff │
╰──────────────────────╯
sqlite> select printf('0x%x', 0 - 2);
╭──────────────────────╮
│ printf('0x%x', 0 ... │
╞══════════════════════╡
│ 0xfffffffffffffffe │
╰──────────────────────╯
When I go back to a project I worked on last month ⌘ Read more
Golden Dome: is Trump’s missile defense system even plausible?
The Pentagon has reportedly selected two contractors to begin working on the seemingly impossible defense project. Back in January of last year, newly… ⌘ Read more
Nationals deputy leader says supermarkets should pay farmers more for produce
Farmers have urged Australia’s major supermarket chains to pay more for fresh produce, in response to increased fuel and freight costs.
GUEST: Darren Chester, Shadow Minister for Agriculture, Fisheries and Forestry
PRODUCER: Isadora Bogle ⌘ Read more
@kiwu@twtxt.net meh, wish I could say I had a great day. What is worse, tomorrow is back at work again. There isn’t a single day I think: did we evolved, and when through all those troubles, to end up like this?!
@lyse@lyse.isobeef.org Indeed. Very unpopular, though. I’ve long given up that fight at work.
In reality, there are too few real incidents. It doesn’t hurt enough. It’s always: “Something could happen!” But we’ve never been hit big time by an attack like this … so I just look like a paranoid idiot.
@itsericwoodward@itsericwoodward.com Thanks! To be clear, my contribution was literally adding that sentence to the documentation, after other people did the work.
talk next to nothing
I could rant about AI a bit and how it ruins every day at work, if that helps? 🤣
When someone comes to talk to me about work during my lunch break ⌘ Read more
@zvava@twtxt.net rooting for it, and you! As soon as there is a stable (no future truly breaking changes) working alpha (can post, can follow, can reply), I will give it a spin! And yes, I understand the contradiction of “stable” and “alpha”; hoping my meaning comes through, LOL.
@zvava@twtxt.net how is that client coming along? “/me gently pushes zvava towards a working desk” 😂
@bender@twtxt.net both, but neither directly. I know every workaround there is, including those used by developers, to test apps, while working on them. However if “sideloading” becomes so tedious, even the more technical users, cannot be bothered to do it, competing appstores and independent developers, not wanting to send their money and ID to Google, loose users at such rate, they likely won’t be able to justify continuing to maintain their projects, people like me rely on.
2nd Van trip coming up this weekend, taking Friday off work. Gonna sleep in the Van tonight and see if I can fiddle with the town water supply (basically our outside tap near the Van haha 😆) and see if I can have a shower in the Van, brush my teeth and go to bed 🛌 – Basically I just want to figure out the rest of the plumbing 🪠
This year for some reason or another, I decided to purchase an Ocarina, I’ve been practising a fair bit every now and again, basically during work breaks and sometimes in the afternoon / evenings (not enough to annoy the family 🤣) Anyhoo, that was 3 months ago, since then I’ve built up a bit of a Repertoire:
- Silent Night
- My Bonnie Lies Over the Ocean
- Amazing Grace
- O Holy Night
- Happy Birthday
- Greensleeves
- Scarborough Fair
- She’ll Be Coming ’Round the Mountain
I’ve now decided to purchase a slightly better quality Ocarina, the one I originally bought was a cheap $28 one, I’m now upgrading to a more professional instrument worth about $80 – Wish my luck 🍀
Just learned this nice little life-hack for disconnecting MC4 Solar connectors 👌 Works really well! And I don’t have to buy a special little MC4 assembly tool 🥳
@itsericwoodward@itsericwoodward.com your site link on your profile is broken. It goes to https://www.itsericcwoodward.com/, but it should be https://itsericwoodward.com/ (works).
When I realize no one knows how the app’s permission system works ⌘ Read more
@rdlmda@rdlmda.me I am reasonably happy with jenny. If I find time for a twtxt project, I would like to make a web page that works as follows: you point it to your own twtxt feed (as a URL parameter), and then it shows you all the feeds referenced by your “# follow =” lines. So, if I put this up, anyone could use it to view their own feed, with no login required. (Probably a difficult project. For example, I’d want to make sure the backend couldn’t be tricked into helping ddos a web server by trying to fetch lots of “feeds” from it. Anyway, I have too many other projects.)
@movq@www.uninformativ.de This is how my SSH proxy setup works.
@kiwu@twtxt.net after you upload, make sure the audio file looks like this:

And it will work.
@movq@www.uninformativ.de I don’t think it is anything you are doing wrong. I think it is on @prologic@twtxt.net side. I am getting the exact same result, but I never cloned that repository. Maybe it worked fine at certain point, when @lyse@lyse.isobeef.org cloned it, but I doubt brand new users can get through.
https://www.youtube.com/watch?v=T4Upf_B9RLQ
“A proud tradition, but it is hard work. Enter… The Internet!”
When my pip install works on the first try ⌘ Read more
Does that work?
@bender@twtxt.net Oops, missed this. I haven’t done any client work since my brief experiment modifying jenny a while back.
Last year, I made a huge mistake. I repeated on here, what multiple sourcea at Google told me, and what is to this day, written on their blog about Android.
I failed to take into consideration, that people who work at Google, often just lie, or present things intentionally vaguely, so they do not have to follow through with their promises.
I would like to apologize to everyone, who took my previous posts here, as assurance software not explicitly approved by Google, will continue working on Android, past this year (or even just a couple months from now) and that everything has been resolved, as things are now in fact even worse, than they were before. To follow the current state of “Open Android”, please check: https://keepandroidopen.org/
@rdlmda@rdlmda.me I never saw the point of a registry to be honest, as it defeated the point of what I believed to be a truly decentralised non-social social ecosystem. What can and does work however is a search engine and crawler. I used to run one, but I took it down, mostly because it got expensive to operate, at least the implementation I built… Maybe one day i’ll try again with a SQLite backend.
When the user table I have to work with has more than a hundred fields ⌘ Read more
@rdlmda@rdlmda.me I mean, if you’re talking about a “Follow me” button you can put on your site somewhere and it somehow magically™ works, yeah we haven’t figured out a good way to do this honestly.
Replies aren’t actually broken, I just… need to add myself to the follow list?! That’s quite counter-intuitive and (IIRC) not mentioned in the docs. But… It seems to be working now, which is nice (I still don’t know how webmentions and webfinger works, so can’t speak about this so far)
yarnd (what runs here at twtxt.net) actually does this automatically by default. I think it’s just an implementation detail to be honest. There’s nothing about this in the specs over at https://twtxt.dev
When I find out the cache system never actually worked ⌘ Read more
@prologic@twtxt.net LOL. Best test ever: if it doesn’t work out, walk a few steps to complete comfort. Win-win!
When I’m working on two production environments at the same time ⌘ Read more
Consciousness is the fundamental basis of reality, physicist claims
What if consciousness didn’t simply arise from the physical brain, but was instead the basis of reality itself ? Exactly how consciousness works has l… ⌘ Read more
When a script saves me 2 hours of work per week and I never told anyone ⌘ Read more
It’s bad news yet again for the launch of NASA’s Artemis II mission
Just when it looked like the launch would go ahead, another spanner in the works manifested itself. It seems that NASA can’t catch a break - at least … ⌘ Read more
NASA veteran maintains that extraterrestrial life really is out there
Dr Gentry Lee, who worked on the Mars Viking mission, has spent decades designing probes that land on other worlds. Speaking recently at the American … ⌘ Read more
‘X-Files’ reboot is still in the works, new female lead is cast
The return of the iconic 90s TV series will feature two new leads and looks set to carry on where the old show left off. When The X-Files debuted back… ⌘ Read more
When I’m working remotely and get back to my computer after a short nap ⌘ Read more
Declassified files detail CIA’s little known behavioral control program
During the 1950s, the CIA had been working on a program designed to find ways to manipulate people’s behavior. Known as Project Artichoke, the endeavo… ⌘ Read more
👋 Looking for other interested folks to continue to evolve the development of Salty.im 🙏 I’ve been hard™ at work on the v2 branch and @doesnm.p.psf.lt@doesnm.p.psf.lt has been incredibly helpful so far. Be great ot have a few more folks to join us, some of the v2 highlights include:
- Double Ratchet by default.
- Group Chat (sender/client fan-out for now)
- Much better TUI with background agent.
- Mobile App coming soon™ (iOS in progress, Android next, same codebase)
When the small script I started working on 2 weeks ago becomes a full-blown project ⌘ Read more
When I run docker-compose up and everything works on the first try ⌘ Read more
Moon Davé doesn’t mention #py5 directly but very briefly shows something done with #Processing + #py5 cc @py5coding@py5coding
** Snakes snakes snakes, a week note **
I’ve been working on an ill advised project. This project will have to be done in many parts. Part one of many is done, and I’m debating if I should share it, or if I should wait to get the whole thing done. But now, a smash cut…I started this post off as a normal post, but now that it is an RSS sickos only post…
Check this shit out! I recently read about the $1 unistroke recognizer, and predictably, had to try to [implement my … ⌘ Read more
@prologic@twtxt.net Sorry if I raised the wrong hope. Only the German talk is about the “why good people don’t want to work at your company” subject. Among the key points are the absolutely terrible job adverts, team leads not themselves looking for people to hire but letting other dudes do that, company cultures and communication.
@lyse@lyse.isobeef.org I just watched this. And whilst it’s very good and insightful, good history of MySQL and how Martin helped built a good solid Open Source + Commercial model, I’m not seeing the “why people don’t wanna work at your company” bit? What am I missing? 🤔 In any case, he does talk to great length on the importance of Culture and the insane notion of “centrlaised office working”, which I 100% agree with.
A mate just recommended this German talk why people don’t wanna work at your company: https://media.ccc.de/v/froscon2025-3321-es_es_ka_em_warum_gute_leute_nicht_bei_euch_arbeiten_wollen It’s really good. I fully agree with most parts.
The speaker referenced https://www.youtube.com/watch?v=2xmEgtRhw7o (Mårten Mickos: Believe in Something Bigger Than Yourself) which is also very interesting, if you make it through the first bit. He talks about his CEO role at MySQL AB.
When I have no choice but to work with an old poorly formatted JSON file ⌘ Read more
@movq@www.uninformativ.de I also had to laugh. :-D And that’s what crossed my mind for a splitsecond, too. Two decades ago or so, that would have worked. But these days are long over. Wasn’t it even an INI file or something like that?
Okay, so the funniest thing that has happened at work in the realm of AI so far is this:
So this guy (that holds a certain position of power) wants people to use more AI, meaning people are expected to install a set of AI tools on their laptops. But, of course, he doesn’t want to write proper documentation for this, because that would be silly monkey work, right? So he conjures up some AI prompts that are intended to make the AI agent install all this stuff by itself.
Do you see where this is going? Can you see the punchline?
That’s right! Since none of this AI stuff is deterministic, every setup is different. 🤦♀️ Like, 10, 20 systems, all set up a little different and people wonder why this or that doesn’t work as expected.
Okay, it’s not funny.
Fuck me dead! I accidentally confused an HTML file for a YAML file and manually opened it in my browser. Unfortunately, I clicked on the OK button of the popped up dialog a bit too fast, it just caught me off guard. It asked which program to open the YAML file in. Of course Firefox thought that it could handle that and suggested itself by default. Conveniently, the “don’t prompt me again and always use this selection from now on” checkbox was enabled.
And then the endless loop of death started. Turns out, this fucking browser can’t do shit with YAML files and delegated to what had been just configured. Oh, would you look at that!? Firefox! Empty tabs after empty tabs appeared. Killing and restarting Firefox just loaded the last session with all the tabs and the loop continued.
Some bloody snakeoil on my work machine slows down link openening requests by two, three seconds. It’s always absolutely anoying, but luckily, it actually limited the rate of new tabs popping up. I still could not close the many tabs fast enough that had accumulated before I noticed what was going on in the background.
Going to the settings to change them was always interrupted with a new tab opening in the foreground.
Finally, killing Firefox and renaming the file on disk before restarting Firefox did the trick and broke the loop. I was still holding down Ctrl+W for a minute or so to get rid of the useless tabs. I didn’t want to loose the important tabs, so just ditching the session wasn’t an option.
When the server responds 200 OK but absolutely nothing works ⌘ Read more
salty-chat TUI client as well, which now includes proper notifications and a background agent that keeps running so you never miss any messages. It all "just works"™ and I'm quite happy with the outcome! 🤩 #saltyim #revamp
@prologic@twtxt.net I will give it a try when it works flawlessly. ☺️ Then I will need people to interact with, otherwise it’s a “mute” case. 🤭
I spent the day today integrating @xuu@txt.sour.is’s double ratcheting work and ratchet library back into the reference client/broker implementation saltyim as a v2 branch. I completely redesigned and rewrite the salty-chat TUI client as well, which now includes proper notifications and a background agent that keeps running so you never miss any messages. It all “just works”™ and I’m quite happy with the outcome! 🤩 #saltyim #revamp
When the code review takes longer than the actual dev work ⌘ Read more
NT avocado farm getting closer to reality
A Top End horticulturalist is working on tropical variates of avocado and has agreed to supply a grower with hundreds of trees. ⌘ Read more
When my regex finally works perfectly ⌘ Read more
@klaxzy@klaxzy.net Nope, not IONOS, but we use them a lot at work. To be honest, I consider them one of the better providers (at least regarding the IaaS stuff that we do). 😅
UFO whistleblower: ‘angels in the Bible may have been alien visitors’
Speaking on the Joe Rogan podcast recently, David Grusch opened up on his thoughts about aliens and angels. Grusch, who previously worked with the Nat… ⌘ Read more
When I realize I was working on the wrong branch ⌘ Read more
@bender@twtxt.net Thanks for letting me know it was Mobile Safari! I just did some testing real quick and things are not working very well 🤔 I think I’ve introduced some regressions last night as I was putting this into prod 😅 services me right for late-night deployment 🤣 I’ve taken it down for now, will spend a bit more time on testing making sure things all work properly!
When my demo only works when no one is watching ⌘ Read more
Just showelled 20cm of snow for half an hour, fuck me! I’m totally shattered. But it’s worth it. Looks so beautiful. And all the disbelief and terror in the eyes of the people. Well, that’s what our winters were like three decades ago. I’m just glad that I can work from home.
Has a bit of a long history story behind this, where last year at work we were reading this book called Engineering a Safer World and initially came across a service called Speech Reply that allowed me to upload a PDF copy of the book and start to read it, but unfortunately, the free trial right now before I can finish reading it turns out that Speech Reply service cost a whopping US$30 a month and expected me to pay a full year upfront, which was well over US$300 just for one fucking book! So I sent their sales and support staff a message kindly asking if it were possible to just pay for the audio transcription of just a single book or to change to a monthly subscription fee, to which they refused, so basically in the end I got very angry and told them to go fuck themselves and built my own service. A year later here we are :-)
Another project where I’m going to use my terminal widget toolkit is a hex editor. This is still very young, obviously, and there’s a lot of work to do (both in the toolkit and this particular application), but I’m making some progress:
https://movq.de/v/2bae14ed16/vid-1769283187.mp4
Since this program is UTF-8 clean (I hope), you can do things like enter multi-byte UTF-8 sequences or paste them from the system clipboard (another hex editor I just tried failed to do this correctly):
https://movq.de/v/e9241034c1/vid-1769283755.mp4
Under the hood, I’m using mmap() with MAP_PRIVATE, which is really cool: I get the entire file as a byte array, no matter how large it is, no need to actually read it upfront; and MAP_PRIVATE means that I can write to this area however I like without changing the underlying file. The kernel does copy-on-write for me. Only when you hit Save, it will write to the filesystem. And it’s just a couple lines of code. The kernel does all the magic. 🥳
@kiwu@twtxt.net No embedding works! I’ll have a look at what you did here 👌
yarnd had no reason to "pull" it in.
@bender@twtxt.net Only missing roots would trigger that kind of sync IIRC. And that only works if another peering pod has the root twt. What you’re remembering, possibly, is an attempt to do what you were thinking of… But I tried it, turned out to be too expensive of an operation to do auotmatically.
Spent basically the entire day (except for the mandatory walk) fighting with Python’s type hints. But, the result is that my widget toolkit now passes mypy --strict.
I really, really don’t want to write larger pieces of software without static typing anymore. With dynamic typing, you must test every code path in your program to catch even the most basic errors. pylint helps a bit (doesn’t need type hints), but that’s really not enough.
Also, somewhere along the way, I picked up a very bad (Python) programming style. (Actually, I know exactly where I picked that up, but I don’t want to point the finger now.) This style makes heavy use of dicts and tuples instead of proper classes. That works for small scripts, but it very quickly turns into an absolute mess once the program grows. Prime example: jenny. 😩
I have a love-hate relationship with Python’s type hints, because they are meaningless at runtime, so they can be utterly misleading. I’m beginning to like them as an additional safety-net, though.
(But really, if correctness is the goal, you either need to invest a ton of time to get 100% test coverage – or don’t use Python.)
@movq@www.uninformativ.de What worked? 😆
Another new UFO movie is coming - this time about the Roswell incident
It seems we can’t move for UFO movies these days and now yet another one is reportedly in the works. Late last year we learned details about Steven Sp… ⌘ Read more
@movq@www.uninformativ.de I still think that your original domain is cool as fuck! :-)
I didn’t change any subscriptions, and I still see your messages, so whatever you did worked fine. :-)
Did it work? Am I still here? 🤣
I love using #ThonnyIDE, and, on Linux, I can use !pip install, !jupyter lab, and !py5-live-coding mysketch.py on the interactive shell console, I wish this would work on Windows too :(
./bin/mu -B -o ... -p muos/amd64 ... target.
@prologic@twtxt.net I’d love to take a look at the code. 😅
I’m kind of curious to know how much Assembly I need vs. How much of a microkernel can I build purely in Mu (µ)? 🤔
Can’t really answer that, because I only made a working kernel for 16-bit real mode yet. That is 99% C, though, only syscall entry points are Assembly. (The OpenWatcom compiler provides C wrappers for triggering software interrupts, which makes things easier.)
But in long mode? No idea yet. 😅 At least changing the page tables will require a tiny little bit of Assembly.
./bin/mu -B -o ... -p muos/amd64 ... target.
I’ve only got a handful of syscalls working right now. Taking inspiration from the calling convention of the Linux kernel and even made the service/interrupt handler int 0x80h 🤣 I’ve only got read, write, alloc and exit working righ tnow 🥲
./bin/mu -B -o ... -p muos/amd64 ... target.
Whohoo! 🥳
You have no idea how great a feeling this is! This includes the Mu stdlib and runtime as well, not just some simple stupid program, this means a significant portion of the runtime and stdlib “just works”™ 🤣
@eldersnake@we.loveprivacy.club haha! I read as Golang the first time too. It is just the way our minds work. :-P
When my script isn’t optimized but still works anyway ⌘ Read more
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace… :-D Yep, suddenly there went my X…
@movq@www.uninformativ.de Yeah, I know that terminals are super weird and messy. In both the KDE Konsole (identifying itself as TERM=xterm-256color) and xterm (TERM=xterm) it just works flawlessly. My urxvt (TERM=rxvt-unicode-256color) just doesn’t. I also tried messing with TERM in urxvt, but no luck so far.
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace… :-D Yep, suddenly there went my X…
@lyse@lyse.isobeef.org Unix terminals are quite limited in that regard. 🫤 You know how Ctrl works? The XOR 0x40 thing? And Alt doesn’t exist at all, it’s just a prefixed ESC byte.
I was surprised to see curses knowing about “Shift+Tab”, wondering how that is supposed to work. Well, it’s an escape sequence, of course (depending on the terminal, of course).
tcell.Key constants and typing different key combinations in the terminal to see the generated tcell.EventKeys in the debug log. Until I pressed Ctrl+Alt+Backspace… :-D Yep, suddenly there went my X…
Well, in Xterm, I actually do get key combinations with the Shift modifier. Also, combinations of several modifiers just work exactly as I expect. But not in URXvt. Hmm.
Some work on the menu system to brighten my mood a little bit. No mouse support yet.
@prologic@twtxt.net Work and the general state of (gestures broadly) everything.
@bender@twtxt.net it works fine under jenny. Maybe it is a bug on Yarn?
Yes, if a twtxt contains something like “(This is a test. Will this work as it should?)”, it will show empty on Yarn.
Okay, I had heard of “River” before but I was not aware of this:
https://codeberg.org/river/river
River defers all window management policy to a separate window manager implementing the river-window-management-v1 protocol. This includes window position/size, pointer/keyboard bindings, focus management, window decorations, desktop shell graphics, and more.
This sounds promising and it follows the old X11 model. River does all the nasty Wayland work and I can make just the WM? 🤔🤯
@lyse@lyse.isobeef.org It’s not super comfortable, that’s right.
But these mouse events come with a caveat anyway:
ncurses uses the XM terminfo entry to enable mouse events, but it looks like this entry does not enable motion events for most terminal emulators. Reporting motion events is supported by, say, XTerm, xiate, st, or urxvt, it just isn’t activated by XM. This makes all this dragging stuff useless.
For the moment, I edited the terminfo entry for my terminal to include motion events. That can’t be a proper solution. I’m not sure yet if I’m supposed to send the appropriate sequence manually …
And the terminfo entries for tmux or screen don’t include XM at all. tmux itself supports the mouse, but I’m not sure yet how to make it pass on the events to the programs running inside of it (maybe that’s just not supported).
To make things worse, on the Linux VT (outside of X11 or Wayland), the whole thing works differently: You have to use good old gpm to get mouse events (gpm has been around forever, I already used this on SuSE Linux). ncurses does support this, but this is a build flag and Arch Linux doesn’t set this flag. So, at the moment, I’m running a custom build of ncurses as a quick hack. 😅 And this doesn’t report motion events either! Just clicks. (I don’t know if gpm itself can report motion events, I never used the library directly.)
tl;dr: The whole thing will probably be “keyboard first” and then the mouse stuff is a gimmick on top. As much as I’d like to, this isn’t going to be like TUI applications on DOS. I’ll use “Windows” for popups or a multi-window view (with the “WindowManager” being a tiny little tiling WM).
Most of it should work on other platforms, the bytecode VM that is. You may run into some platform quirks though that rely on syscall() – Let me know what you run into and I’ll try to fix them nw. The problem right now is I haven’t even begun to start work on another platform/architecture yet.
@shinyoukai@neko.laidback.moe the whole bridge idea is a mistake done twice (I encouraged the first time, it was a mistake to do so). In this case, the “Babel Tower” works; there is no need to interact with “others”, let it be just twtxt.
Work kills the soul
Since most of the jobs that we do nowadays are simply meaningless: Yes. Work kills the soul.
Work kills the soul
it sure can! 🤣
Vacation: Doing crazy things like C on DOS, lots of Rust, bare-metal assembly code, everything is fine.
Back at work: How the fuck do I move an email in this web mail program? Am I stupid? 😮💨
@prologic@twtxt.net Yep! I like that this distillation metaphor makes it explicit: You have to go ahead and actually distill something. It doesn’t happen automatically. The metaphor acknowledges that this is work that needs to be done by someone.
I think this is finally a good metaphor to talk about “simple” software:
https://oldbytes.space/@psf/115846939202097661
Distilled software.
I quote in full:
principles of software distillation:
Old software is usually small and new software is usually large. A distilled program can be old or new, but is always small, and is powerful by its choice of ideas, not its implementation size.
A distilled program has the conciseness of an initial version and the refinement of a final version.
A distilled program is a finished work, but remains hackable due to its small size, allowing it to serve as the starting point for new works.
Many people write programs, but few stick with a program long enough to distill it.
I often tried to tell people about “simple” or “minimalistic” software, “KISS”, stuff like that, but they never understand – because everybody has a different idea of “simple”. The term “simple” is too abstract.
This is worth thinking about some more. 🤔