lyse

lyse.isobeef.org

No description provided.

In-reply-to » @lyse You actually have a Markdown parser/renderer in there? Oh dear. I would have been (well, I am) way too lazy for that. 😅

@movq@www.uninformativ.de Well, just a very limited subset thereof:

  1. inline and multiline code blocks using single/double/triple backticks (but no code blocks with just indentation)
  2. markdown links using using [text](url)
  3. markdown media links using ![alt](url)

And that’s it. No bold, italics, lists, quotes, headlines, etc.

Just like mentions, plain URLs, markdown links and markdown media URLs are highlighted and available in the URLs View. They’re also colored differently, similarly to code segments.

I definitely should write some documentation and provide screenshots.

​ Read More
In-reply-to » @movq That's cool! I also like the name of your library. :-) I assume you made the thing load quickly, didn't you?

@movq@www.uninformativ.de Yeah, I see. Just crudely checked on my computer, with around 0.013 seconds, Python 2.7 seems a tad faster than Python 3.14’s 0.023 seconds in this little program.

The lazy imports sound not too bad, but I just skimmed over them. There are surprisingly many exceptions, but yeah, no way around them. :-)

​ Read More

I just fixed another bug in tt where the language hint in multiline markdown code blocks had not been stripped before rendering. It just looked like it was part of the actual code, which was ugly. I now throw it away. Actually, it’s already extracted into the data model for possible future syntax highlighting.

​ Read More

@shinyoukai@neko.laidback.moe Because you might not want to commit all changed files in a single commit. I very often make use of this and create several commits. In fact, I like to git add --patch to interactively select which parts of a file go in the next commit. This happens most likely when refactoring during a feature implementation or bug fix. I couldn’t live without that anymore. :-)

If you have a much more organized way of working where this does not come up, you can just git commit --all to include all changed files in the next commit without git adding them first. But new files still have to be git added manually once.

​ Read More
In-reply-to » Hmm, mine also resolves a leading tilde in these variables. And if $HOME is not specified it tries to resolve the user's home directory by user.Current().HomeDir. Maybe that's overkill, I have to check the XDG spec.

Ok, the standard library implementation is wonky at best, at least in regards to XDG, because it really doesn’t implement it properly. https://github.com/golang/go/issues/62382 I stick to my own code then. It doesn’t properly support anything else than Linux or Unixes that use XDG, but personally, I don’t care about them anyway. And the cross-platform situation is a giant mess. Unsurprisingly.

​ Read More
In-reply-to » (#dkvkbra) @shinyoukai Cool, I didn't know about os.UserConfigDir() up until a few seconds ago! I always implemented that myself.

Hmm, mine also resolves a leading tilde in these variables. And if $HOME is not specified it tries to resolve the user’s home directory by user.Current().HomeDir. Maybe that’s overkill, I have to check the XDG spec.

But I’m definitely missing os.UserDataDir(). That’s a bummer.

​ Read More
In-reply-to » @lyse Well, I used SnipMate years ago (until 2012). IIRC, it’s more than just “insert a bit of text here”, it can also jump to the correct next location(s) and stuff like that. Don’t remember why I stopped using it.

@movq@www.uninformativ.de Thanks! I’ll have a look at SnipMate. Currently, I’m (mis)using the abbreviation mechanism to expand a code snippet inplace, e.g.

autocmd FileType go inoreab <buffer> testfunc func Test(t *testing.T) {<CR>}<ESC>k0wwi

or this monstrosity:

autocmd FileType go inoreab <buffer> tabletest for _, tt := range []struct {<CR>    name string<CR><CR><BS>}{<CR>   {<CR>   name: "",<CR><BS>},<CR><BS>} {<CR>  t.Run(tt.name, func(t *testing.T) {<CR><CR>})<CR><BS>}<ESC>9ki<TAB>

But this of course has the disadvantage that I still have to remove the last space or tab to trigger the expansion by hand again. It’s a bit annoying, but better than typing it out by hand.

​ Read More
In-reply-to » @lyse I’m toying with the idea of making a widget/window system on top of Python’s ncurses. I’ve never really been happy with the existing ones (like urwid, textual, pytermgui, 
). I mean, they’re not horrible, it’s mostly the performance that’s bugging me – I don’t want to wait an entire second for a terminal program to start up.

@movq@www.uninformativ.de I see. Yeah, all the Unicode stuff certainly doesn’t help here, that’s for sure.

Maybe “speedcurses” could be a name. Or just select any Palatinate curse. ;-)

​ Read More
In-reply-to » @lyse I can tell you this right now, writing assembly / machine code is fucking hard workℱ 😓 I'm sure @movq can affirm đŸ€Ł And when it all goes to shitℱ (which it does often), man is debugging fucking hard as hell! Without debug symbols I can't use the regular tools like lldb or gdb 😂

@prologic@twtxt.net Oh yeah, I bet it is horrible to troubleshoot.

​ Read More
In-reply-to » @lyse Yeah I remember you said some days back that your interest in compilers was rekindled by my work on mu (”) 😅

@prologic@twtxt.net Yeah, the parser part is what I typically enjoy. Haven’t really looked into code generation itself.

I’m currently looking at your ” commits from the last few days. Holy cow! :-)

​ Read More
In-reply-to » Whoo! I fixed one of the hardest bugs in mu (”) I think I've had to figure out. Took me several days in fact to figure it out. The basic problem was, println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector đŸ€Šâ€â™‚ïž

@prologic@twtxt.net Tada, congratulations! I find that rather interesting, thanks for telling us. :-)

​ Read More
In-reply-to » Trying to come up with a name for a new project and every name is already taken. đŸ€Ł The internet is full!

@movq@www.uninformativ.de How about “Quongsi”? I generated the first five letters with pwgen --no-capitalize --no-numerals 5 and since that already showed up in DDG search results, I simply appended the last two, which yielded nothing on DDG and Google).

What kind of project is it? Maybe we can help you find a name or nudge you in the right direction.

​ Read More

The tt URLs View now automatically selects the first URL that I probably are going to open. In decreasing order, the URL types are:

  1. markdown media URLs (images, videos, etc.)
  2. markdown or plaintext URLs
  3. subjects
  4. mentions

I might differentiate between mentions of subscribed and unsubscribed feeds in the future. The odds of opening a new feed over an already existing one are higher.

​ Read More
In-reply-to » (#o3hv4aq) @zvava The problem you now then is you lose integrity of the message content if you compute the hashes at runtime rather than on the way in. So if your message content or database becomes corrupt in any way, so do your hashes.

@prologic@twtxt.net In my opinion, the integrity isn’t lost. The same input data always result in the same output hash, no matter when you calculate the hashes. It’s true that a corrupt database contents yields to corrupt hashes, but then you have a whole bigger problem than just receiving different hashes. :-D

​ Read More

@zvava@twtxt.net By hashing definition, if you edit your message, it simply becomes a new message. It’s just not the same message anymore. At least from a technical point of view. As a human, personally I disagree, but that’s what I’m stuck with. There’s no reliable way to detect and “correct” for that.

Storing the hash in your database doesn’t prevent you from switching to another hashing implementation later on. As of now, message creation timestamps earlier than some magical point in time use twt hash v1, messages on or after that magical timestamp use twt hash v2. So, a message either has a v1 or a v2 hash, but not both. At least one of them is never meaningful.

Once you “upgrade” your database schema, you can check for stored messages from the future which should have been hashed using v2, but were actually v1-hashed and simply fix them.

If there will ever be another addressing scheme, you could reuse the existing hash column if it supersedes the v1/v2 hashes. Otherwise, a new column might be useful, or perhaps no column at all (looking at location-based addressing or how it was called). The old v1/v2 hashes are still needed for all past conversation trees.

In my opinion, always recalculating the hashes is a big waste of time and energy. But if it serves you well, then go for it.

​ Read More

@zvava@twtxt.net I might misunderstand what you wrote, but only hashing the message once and storing the hash together with the message in the database seems a way better approch to me. It’s fixed and doesn’t change, so there’s no need to recompute it during runtime over and over and over again. You just have it. And can easily look up other messages by hash.

​ Read More
In-reply-to » Mastodon has a “Wrapstodon 2025” now, showing you a “wrap up” of the year. Of course, a pointless funny shitpost was my most “successful” post in 2025. 😂

@movq@www.uninformativ.de Maybe there’s another meaning I’m not aware of, but this doesn’t look like a shitpost to me. Congrats, I guess. ;-)

​ Read More

Oh great, I received an e-mail that my SMTP credentials have been exposed. Once again, just another shitty scanner that generates garbage reports from tests it doesn’t understand. Thank you for nothing!

conf := &Config{
    SMTPHost: "smtp.example.com",
    SMTPPort: 587,
    SMTPUser: "user",
    SMTPPass: "hunter2",
    SMTPFrom: "from@example.com",
}

​ Read More
In-reply-to » Hey EU friends 👋 wtf happened to the EU Internet today for about 40 minutes or so?

@prologic@twtxt.net @movq@www.uninformativ.de A crocodile had bitten the big submarine internet cable that connects Australia to Europe. The investigations revealed that some construction work last week accidentally tore up the protective layer around it. That went unnoticed, unfortunately, so marine life had an easy job today. For just 40 minutes, they were quite fast in repairing the damage if you ask me! These communication cables are fricking large.

Just kidding, I completely made that up. :-D I didn’t notice any outage either. But I didn’t try to connect to Down Under at the time span in question.

​ Read More
In-reply-to » This feels useful: Rust’s Block Pattern

@movq@www.uninformativ.de Very nice! I often wish other languages had something similar. Sometimes, I use lambdas, but that also looks ugly and feels a bit like a misuse. Other times, just the normal blocks are enough, but it’s not the same. Especially with the mutability aspects as the article explains. Typically, I just put it in a function or ignore it if it’s just a few lines.

​ Read More
In-reply-to » @lyse I swear, Her vlog is all I needed to cleanse my soul! Full of pure human interactions (whenever there is any), No BS No pretending and No Nonsense. Again, Thank you!

@aelaraji@aelaraji.com Yes, exactly. It also blows my mind that with sooo much less budget and equipment, her videos are way superior to productions of big TV stations.

​ Read More

Fuck me, soooooooo beautiful! Awwww! :‘-) https://www.youtube.com/watch?v=oYfKgi133qo

This focuses more on the landscape part, other episodes also have amazing interactions with the locals. I cannot recommend the Itchy Boots channel enough. It’s in my top three channels of all time I believe. I hardly get the travel bug, but this has now changed. Watching Noraly’s videos brings me great joy. It also shows humanity is not lost, contrary to what one might think in this crazy world. :-)

Caution, this channel gets very addictive!

​ Read More
In-reply-to » @prologic Bwahahaha! I tried to establish some form of “convention” for commit messages at work (not exactly what you linked to, though), but it’s a lost cause. 😂 Nobody is following any of that. Nobody wants to invest time in good commit messages. People just want to get stuff done.

@movq@www.uninformativ.de Same. :‘-( I just don’t get how people do code archeology with all their shit messages and huge commits changing a gazillion of different things. I always try to lead by setting good examples, but nofuckingbody is picking up on that. At all. Even when bringing this up every now and then.

​ Read More
In-reply-to » I kind of hate conventional commit messages: https://www.conventionalcommits.org/en/v1.0.0/#summary

@prologic@twtxt.net Yeah, I don’t like them either.

As for changelogs, I prefer hand-written ones over something automatically cobbled together. Typically, they are just utter rubbish in my experience.

​ Read More
In-reply-to » @lyse no wonder I picked that cake (albeit coincidentally), I adore almonds, and hazelnuts! Your teammates are absolutely amazing, dude! A very nice project farewell! On leaving places I have a small anecdote.

@bender@twtxt.net Goes to show you just have a good nose for that. :^)

No doubt, I really do love them. Not only wonderful humans and like-minded, but also technically gifted. That made for a superb combination. I just hope the new team turns out to be equally great.

Bwahahahahaaahaaahaaahaaa, what a brilliant story! :‘-D I’ve been given at most ten weeks to return, let’s see. ;-)

​ Read More

@bender@twtxt.net Mate, I don’t know how you do it, but the frequency of words I haven’t come across before is actually quite high in your work. I noticed it in your twtxt messages in the past, but your notes are also full of them. I love it, always learning something new. Thank you for teaching me without knowing. In case you’re wondering, “yesternight” and “squalid” are the ones I stumbled across today. :-)

​ Read More
In-reply-to » @lyse what’s on the one on the left, back? Looks
 enticing! đŸ€€

@bender@twtxt.net That’s the best one of them. An almonds cake with hazelnut chocolate glaze. The one in front is similar, but with chocolate only. Gingerbread on the right. But it develops the best flavor and consistency only in a few weeks, right now it’s quite hard like a rock, but it will soften up.

All those years I always said that my teammates are THE VERY BEST I ever had. Fuck me, look at that, I didn’t leave the company, just changed projects and this is my farewell present: https://lyse.isobeef.org/tmp/abschiedsgeschenk-2025-12-03.jpg How absolutely beautiful is that, I’m in awe! Now I feel even worse deserting. :‘-(

This emblem is the fleur-de-lis of the world scout movement: https://en.wikipedia.org/wiki/World_Organization_of_the_Scout_Movement#WOSM_emblem I reckon I must have mentioned casually that I’m a scout. ;-)

​ Read More
In-reply-to » I have a question! I'm looking for a small personal camera(specifically good for videos because that's what I'll use it for) that's cheap enough for a teen to afford but also actually good. Do any of you tech people have any good recs?

@kiwu@twtxt.net I’ve no idea about regulations in your area, but over here there are different taxation rules for video and photo cameras. Hence, manufacturers limit the video recording time of photo cameras typically to half an hour, so that they don’t classify as video cameras with their higher taxes.

​ Read More
In-reply-to » I have a question! I'm looking for a small personal camera(specifically good for videos because that's what I'll use it for) that's cheap enough for a teen to afford but also actually good. Do any of you tech people have any good recs?

@kiwu@twtxt.net It also greatly depends on what kind of videos you plan to record. When you go, let’s say, diving, the specs need to be probably more suited to that type of environment. What about zoom, macro shots, wide landscapes, and so on? When typically mounted on a tripod, I’d say builtin image stabilization is not required, but for more action shots, this is fairly important to not get sea sick. :-)

I’ve got a Nikon Coolpix S9300. I typically only take photos, but it also works for the occasional video. Free hand moves are quite difficult, but when mounted to a tripod, this is not too shabby. There’s absolutely no way around a (makeshift) tridpod when zooming in, though. The audio is definitely not the best, especially wind destroys everything. If I recorded more video, I would certainly want to have an external microphone.

​ Read More
In-reply-to » I was having a stroll and heard this weird crackling noise. Took me a moment to realize that it’s coming from the tree above me. I looked up and didn’t see anything at first, because of the bad light. And then I saw it: About 10 parrots (alexandrine parakeets or rose-ringed parakeets) were sitting up there, heaving a feast. 😅

@movq@www.uninformativ.de How sweet! :-) I find it super interesting that they’re kinda common around your area: https://de.wikipedia.org/wiki/Alexandersittich#Verbreitung We don’t have them here.

​ Read More