@prologic@twtxt.net Can you just make them optional? :-) But that of course complicates things.
println("Hello World"):
@prologic@twtxt.net Thatâs impressive. How large are the resulting binaries? You donât have any optimizations in place yet, do you?
@movq@www.uninformativ.de I hid in the workshop with earmuffs for the absolute worst part.
@javivf@adn.org.es Heck yeah, letâs do this! :-) Welcome to 2026.
@shinyoukai@neko.laidback.moe We finally abandoned our GitLab. I publicly mirrored my code in the Mills Data Center a few days ago: https://git.mills.io/lyse/tt2
@movq@www.uninformativ.de Well, just a very limited subset thereof:
- inline and multiline code blocks using single/double/triple backticks (but no code blocks with just indentation)
- markdown links using using
[text](url)
- markdown media links using

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.
It totally sounds like an active warzone around here. So, I just went on a very, very, very quick stroll to check out our sunset from ontop our hill (were all the bangs are way more horrible): https://lyse.isobeef.org/abendhimmel-2025-12-31/
Hurray, I finally fixed another rendering bug in tt that was bugging me for a long time. Previously, when there were empty lines in a markdown multiline code block, the background color of the code block had not been used for the empty lines. So, this then looked as if there were actually several code blocks instead of a single one.
https://lyse.isobeef.org/tmp/tt-bugfix-empty-lines-in-multiline-code-blocks.png
@movq@www.uninformativ.de Because theyâre just boxes. :-D
@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. :-)
@movq@www.uninformativ.de Thatâs cool! I also like the name of your library. :-) I assume you made the thing load quickly, didnât you?
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.
Phew, it was just a one-time thing. Ta! :-)
Btw, @shinyoukai@neko.laidback.moe, thatâs a super cool logo on your yarnd. I like it a lot!
It just doesnât look aligned properly: https://lyse.isobeef.org/tmp/misalignment.png Could be a yarnd issue, though, it might not expect a logo this large. Just wildguessing, no idea.
@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.
@shinyoukai@neko.laidback.moe Do we now need ad filters in twtxt clients, too? O_o I hope not! Personally, I cannot stand the âSent with my crappy $phone/$appâ e-mail footers.
But congrats on your client. :-)
os.UserConfigDir() up until a few seconds ago! I always implemented that myself.
@shinyoukai@neko.laidback.moe Yeah, they donât truly support XDG. In fact, I looked in the Go stdlib source code to notice all the differences and shortcomings.
$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.
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.
@shinyoukai@neko.laidback.moe Cool, I didnât know about os.UserConfigDir() up until a few seconds ago! I always implemented that myself.
@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.
Oh, suddenly Mother Hulda dumped a centimeter of snow tonight! https://lyse.isobeef.org/schnee-2025-12-30/01.jpg
Magpie from the day before yesterday: https://lyse.isobeef.org/elster-2025-12-28/
Question to my fellow Vimers: Which snippet insertion mechanism are you using or can you (not) recommend?
Pro tip: Donât keep the christmas biscuits close to the bird fat balls. I nearly mixed up the bags. :-D
@movq@www.uninformativ.de Yeah. I had that in my Python implementation and was really missing that.
@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. ;-)
lldb or gdb đ
@prologic@twtxt.net Oh yeah, I bet it is horrible to troubleshoot.
@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! :-)
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).
Dang it, thereâs a Swede by the username of Quongsi: https://www.flashback.org/u1404408 :-D
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. :-)
@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.
The tt URLs View now automatically selects the first URL that I probably are going to open. In decreasing order, the URL types are:
- markdown media URLs (images, videos, etc.)
- markdown or plaintext URLs
- subjects
- 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.
@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
@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.
@shinyoukai@neko.laidback.moe The CSS 404ing highlights the improvability of the content to noise ratio. :-)
@movq@www.uninformativ.de The asshats are everywhere. Luckily, it has been rather quiet so far. But of course, I now jinxed it.
Itâs this time of the year again, where people burn money on the streets.
Almost all photos turned out to be blurred today. That made sorting a very quick process. Delete, delete, delete, ⊠https://lyse.isobeef.org/waldspaziergang-2025-12-26/
@movq@www.uninformativ.de @prologic@twtxt.net Holy shit, this is sooo fucking cool! :-) Wow, I absolutely love it. Itâs extremely fascinating what these optimizers do.
Woof, woof, @thecanine@twtxt.net! Thatâs cute.
@movq@www.uninformativ.de I have not, thanks! <3
@prologic@twtxt.net @movq@www.uninformativ.de Oh, I take my 0°C over the 36°C anytime! Even with yesterdayâs gray and windy sleet in my face. However, there are definitely more pleasant times to walk in town, Iâll give you that. For example on 0°C sunny today: https://lyse.isobeef.org/waldspaziergang-2025-12-25/
@movq@www.uninformativ.de Hahaha, this is hilarious! :â-D
@movq@www.uninformativ.de Only the roofs are a little white. Itâs also windy here. https://lyse.isobeef.org/weisse-weihnachten-2025-12-24/01.jpg
Indeed, tiny, tiny snowflakes coming down.
@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.
Happy birthday Katrina! https://www.uninformativ.de/blog/postings/2025-12-23/0/POSTING-en.html :-)
Oh wow, there might be snow tomorrow! Probably not much, though. Letâs see.
@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. ;-)
I just had a closer look at https://git.mills.io/prologic/mu and it motivated me to do some compiler building myself again. Hopefully, I find some time in the next free days. Iâm bad at it, but itâs always great fun.
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",
}
@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.
@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.
@movq@www.uninformativ.de Ah, cool! :-) Yeah, itâs very wild what is happening under the hood all the time.
Wow, @movq@www.uninformativ.de, so many tables. No idea what I expected (Iâm totally clueless on this low-level stuff), but that was quite an interesting surprise to me. https://www.uninformativ.de/blog/postings/2025-12-21/0/POSTING-en.html
@kiwu@twtxt.net Ta, same to you!
@movq@www.uninformativ.de Oh, a table of contents is indeed a great idea!
@movq@www.uninformativ.de Interesting. I never found a big use for these kind of lists in general. But I might give it a shot again.
@movq@www.uninformativ.de Not sure what it had in its beak. It looked a wee bit like a large biscuit. But it must have been rock-hard.
@kiwu@twtxt.net Iâm doing great, howâre ya going? Just two more days and then I never have to work anymore. In this year.
I just baked two trays of gingerbread. One definitely good one and another experiment.
This morning was also super pretty: https://lyse.isobeef.org/morgensonne-2025-12-19/
Magpie and sunset: https://lyse.isobeef.org/waldspaziergang-2025-12-18/
@shinyoukai@neko.laidback.moe I think I never watched it. In any case, enjoy reading your books.
@movq@www.uninformativ.de Neither have I. :-D
@shinyoukai@neko.laidback.moe These are all Debian release names: https://www.debian.org/releases/
- Bookworm is current oldstable
- Trixie is current stable
- Forky is current testing
Thatâs some cool science in @xuu@txt.sour.isâs backyard: https://youtu.be/bzBcs0jv9G4
Right at sunset we went for a quick stroll into the woods. Cannot complain about the colors in the sky: https://lyse.isobeef.org/abendhimmel-2025-12-12/
@shinyoukai@neko.laidback.moe Time to become a trixie or forky!
@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.
@aelaraji@aelaraji.com Anytime! Glad you like it, too. :-)
We got a very colorful sunset today: https://lyse.isobeef.org/abendhimmel-2025-12-09/
@prologic@twtxt.net Nice! And foggy as heck, very beautiful! Or is this smog?
@movq@www.uninformativ.de The terminal colors change quite drastically, but not the photo. Interesting.
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!
@movq@www.uninformativ.de :â-D
git log. They simply donât experience the pain that comes with bad commits / commit messages.
@movq@www.uninformativ.de I reckon youâre right. There cannot be any other explanation.
@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.
@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.
@shinyoukai@neko.laidback.moe @prologic@twtxt.net Maybe that is helpful to you: https://git.mills.io/yarnsocial/twtxt2html/issues/12#issuecomment-20792
@prologic@twtxt.net Awwww, I wanna run my hands through this fur so badly! :-)
@movq@www.uninformativ.de @bender@twtxt.net @prologic@twtxt.net Four people! Exactly my thoughts, bender, but super cute. :-)
@prologic@twtxt.net @bender@twtxt.net Reminds me of an apple, too. :-)
@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. ;-)
@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. :-)
@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. ;-)
Letâs hope that the two cakes turn out better than last week: https://lyse.isobeef.org/tmp/tote-und-lebendige-kuchen-2025-12-02.jpg Got some gingerbread as backup. Yeah, best lightingâŠ
@prologic@twtxt.net @bender@twtxt.net Nice! And thanks for the additional info. :-)
@movq@www.uninformativ.de Thatâs also a quite clever approach. :-)
@prologic@twtxt.net Lol, these sails on that boat! :-D
@kingdomcome@yarn.girlonthemoon.xyz Oh, cool! Can we see the results? :-)
@prologic@twtxt.net Judging by the BRG and BIDV buildings, I conclude this is Há» HoĂ n Kiáșżm: https://en.wikipedia.org/wiki/Ho%C3%A0n_Ki%E1%BA%BFm_Lake
@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.
@klaxzy@klaxzy.net Worked out perfectly for me, too! :-)
@prologic@twtxt.net Tada! There you once hope for your flight and ride to be delayed and then of course they are right on time! :-D You gotta wait either way. ;-) Looks like you got some good drinks, though.
@movq@www.uninformativ.de Haha, I would feel the same. :-)
@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.
@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.
The photo doesnât do justice at all, it was blood red: https://lyse.isobeef.org/abendhimmel-2025-11-27/
@iolfree@tilde.club @movq@www.uninformativ.de So true! Good read, thanks for recommending. :-)