@prologic@twtxt.net Yeah, this really could use a proper definition or a βmanifestβ. π Many of these ideas are not very wide spread. And I havenβt come across similar projects in all these years.
Letβs take the farbfeld image format as an example again. I think this captures the βspiritβ quite well, because this isnβt even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
ββββββββββ€ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bytes β Description β
β βββββββββͺββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β 8 β "farbfeld" magic value β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (width) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (height) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [2222] β 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major β
ββββββββββ§ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I donβt know if your screen reader can work with this. Let me know if it doesnβt.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no βknobsβ: Itβs just a single version, itβs not like thereβs also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, itβs useful. Iβve used it in various programs, like my window manager, my status bars, some toy programs like βtuxeyesβ (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesnβt need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesnβt cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided itβs not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
@movq@www.uninformativ.de Yeah thatβs why Iβm striking this conversation with you π Not only do I respect your opinion quite highly π€£ But like you say (and Iβve read their philipshpy) it can be a bit βelitismβ for sure. Iβm genuinely interested in what we think of as software that βdoesnβt suckβ. Tb be honest I havenβt really put thought to paper myself, but I reckon if I did, Iβd have some opinions/ideasβ¦
@eldersnake@we.loveprivacy.club This was an interesting read for sure! π I donβt think it had anything I hadnβt already considered in terms of the ethical/moral points of view. Iβm not sure where I stand myself either to be honest. Iβve forced myself to get familiar with the ecosystem and tooling, because in my line of work as a tech lead (staff engineer in sre) you donβt want to be that one guy that ya know π Ethically/Morally though, Iβm definitely with the sentiment of this post π Much like the whole Crypto hype yaers back (if yβall remember?!) this is also one of the most energy hungry pieces of βtechβ (if you can call it that?) in a while. Then thereβs these other issues βstealing peopleβs workβ, βreliance is causing humans to become cognitively weak and neural connections to shrinkβ, to name a fewβ¦
@prologic@twtxt.net I like the last two, on the first three you sent. I looked up βCanarvon Gorgeβ, and read more about it. Thanks for introducing me to it!
Thanks @bender@twtxt.net! Yeah, so super cute. I couldnβt pet them, though. Despite very curious, they were also very restless.
I persuaded my dad to check out the fireflies with me tonight. He only wanted to go for a short trip, so we came just across a couple hundred of them. Otherwise, the thousands mark would have been exceeded in no time. He was super glad I talked him into that. :-)
It was also my first time to see them over the meadows. Those numbers donβt compare to the ones inside the forest, no question, but we probably saw 60 or so. Havenβt come across them there before, I only heard and read about that.
Note to future-Lyse next year: Leaving at 21:45 seems like a good time. We left earlier and had to wait just a few more minutes for them to come out in masses.
Too bad itβs impossible to share photos or videos. My camera isnβt made for that at all, not even close.
Read Lukas 1, the announciation and birth of the prophet John the Baptist. bible.com
Unless your Terms of use update email looks and reads the same as the one I got yesterday from mastodon.social, I donβt wanna know about it, nor do I agree to it.
@kat@yarn.girlonthemoon.xyz Ooh, Iβve got to bookmark that page. π
@aelaraji@aelaraji.com I wish I had the luxury of not reading that junk. π But instead, I have a Mutt hotkey that pipes an HTML mail through elinks β¦ Bah.
@movq@www.uninformativ.de > That guy over there in the cornerβ¦
Iβm literally sitting in a corner chuckles. I rarely get any emails nowadays. But if I do and it is not plain-text, then my Mutt gets to bark at it and I, justβ¦ wonβt read it. π€·π½ββοΈ
@movq@www.uninformativ.de Yeah. :-( But hey, there are at least six of us using mail as it should beβ’. :-)
I sent the dealer an e-mail about that with all sorts of other issues as well. Letβs see if they fix anything of that some day. Or yet just even read it.
OpenBSD has the wonderful pledge() and unveil() syscalls:
https://www.youtube.com/watch?v=bXO6nelFt-E
Not only are they super useful (the program itself can drop privileges β like, it can initialize itself, read some files, whatever, and then tell the kernel that it will never do anything like that again; if it does, e.g. by being exploited through a bug, it gets killed by the kernel), but they are also extremely easy to use.
Imagine a server program with a connected socket in file descriptor 0. Before reading any data from the client, the program can do this:
unveil("/var/www/whatever", "r");
unveil(NULL, NULL);
pledge("stdio rpath", NULL);
Done. Itβs now limited to reading files from that directory, communicating with the existing socket, stuff like that. But it cannot ever read any other files or exec() into something else.
I canβt wait for the day when we have something like this on Linux. There have been some attempts, but itβs not that easy. And itβs certainly not mainstream, yet.
I need to have a closer look at Linuxβs Landlock soon (βsoonβ), but this is considerably more complicated than pledge()/unveil():
@bender@twtxt.net Both Gopher and Mastodon are a way for me to βbabbleβ. π I basically shut down Gopher in favor of Mastodon/Fedi last year. But the Fediverse doesnβt really work for me. Itβs too focused on people (I prefer topics) and I dislike the addictive nature of likes and boosts (Iβm not disciplined enough to ignore them). Self-hosting some Fedi thing is also out of the question (the minimalistic daemons donβt really support following hashtags, which is a must-have for me).
Iβll probably keep reading Fedi stuff, I just wonβt post that much, I think.
@prologic@twtxt.net Yeah, itβs difficult, you often donβt get what youβd expect. They also make heavy use of 3rd party libraries. IIUC, for random numbers, they refer to this library. Iβve read many times that the Rust stdlib is intentionally minimalistic (to make it easier to maintain and port and all that).
Iβm struggling with this, using 3rd party libs for so many things isnβt really my cup of tea. Iβll probably make my own tiny little βstandard libraryβ. Itβs silly, but I donβt see any other options. π€·
Alert Sound
β Read more
Neighbor-Source Heat Pump
β Read more
Trojan Horse
β Read more
@kat@yarn.girlonthemoon.xyz That sounds fun! Iβm happy to read an article on how you did that. :-)
Bridge Types
β Read more
@oloke@nghia.im iβm reading about this Garage today, will watch this one for sure, promising, since those folks look like familiar with YunoHost ecosystem and French things
also found another things called Riak
just read about it, i was strongly agaisnt AI since the benninging and have also moved from GH to self-hosted Gitea.
thanks for sharing and thanks for making this!
Check Engine
β Read more
Archaea
β Read more
Mass Spec
β Read more
@movq@www.uninformativ.de i feel like when i read go code iβm reading some algebra shit where every part is 1-5 letters long and then thereβs weird symbols like := and itβs just infinitely harder for me to parse and infer meaning from lol. itβs such a me problem
fit 1 $ spin (saw 0.1 * sign fxy) $ rect 0 1 - rect 0 0.99 >> add;
#punctual #livecoding #creativecoding #videoart
@prologic@twtxt.net You can read more about the βcrypticβ live coding language Punctual in my newsletter
Drafting
β Read more
Bakerβs Units
β Read more
Wanna read something very scary?
Your future doctor is using ChatGPT to pass medical school, so you better start riding a bike and eating healthy now.
π¨π¨π¨
Renormalization
β Read more
Sail Physics
β Read more
@lyse@lyse.isobeef.org I canβt read. π€¦ Yeah, thatβs gonna be a problem. I was not yet able to trigger it, though. Maybe they are (like Google) rolling out these changes gradually β¦
@bender@twtxt.net Basically the way Iβm reading this is 1 RPM. This is a rather aggressive rate limit actually. This basically makes Github inaccessible and useless for basically anything unless youβre logged in. You can basically kiss βpursuingβ casually, anonymously goodbye.
Imagine if I imposed that kind of rate limit on twtxt.net?! π€£
Modern
β Read more
@kat@yarn.girlonthemoon.xyz You donβt need to change the directory first in line 11, you can just create the directory, thatβs sufficient since youβre having an absolute path.
The echo in line 13 is useless, you can simplify this to: newdir="$WD/$now" If you reversed this line with the previous one, you could make use of the variable in the directory creation: mkdir "$newdir".
In line 16, pull the directory change out of the loop upfront. The loop body doesnβt modify the working directory, so no need to reset it with each cycle. In fact, you could even spare the cd altogether when you simply tell find where to look: find "$basedir" -type fβ¦.
I didnβt try it, but if I read the manpage correctly, you should be able to simplify line 19 as well:
-C Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.
Hence, remove the cd and put the -C "$WD" as the first argument to tar. Again, I didnβt try it. Proceed with caution.
Finally, you donβt need to specify the full path to rm in line 21. I bet, /bin is in your PATH. When you removed the previous cd from my last suggestion, the relative path that follows wonβt work anymore. So, just use the absolute path that you already have in a variable: rm -rf "$newdir"
I hope you find this tiny review a wee bit useful. :-)
Deposition
β Read more
Speaking of FP, this was a really nice reading https://www.gtf.io/musings/why-haskell
Learning Functional Programming while reading Ted Chiang short stories has been somethingβ¦
Pascalβs Law
β Read more
@prologic@twtxt.net I read a little about her. Looks to be a good fit for the seat she is holding. I hope she gets to keep it.
Globe Safety
β Read more
About 20 Pounds
β Read more
@andros@twtxt.andros.dev Programming is art. You become good at art by practising your art. You learn artistic patterns by being inspired by and reading others art works. The most importance however is that you practise your art.
Nobody want to be a shitty programmer. The question is: Do you do anything not to not be one?
Reading blogs or social media and watching YouTube videos is fun. After them, your code may be a little better, of course. But you need a lot. You need to study! Read good books and study the code of other programmers, for example. Maybe work with a new language, architectures and paradigms. You need break the routine.
If you know Object-oriented programming, you learn functional programming.
If you know Model-View-Controller, you learn Model-View-ViewModel.
If you donβt know anything about architectures, you learn Clean Architecture, Hexagonal Architecture, etc.
If you know Python, you learn Ruby or Go.
If you know Clojure or Lispβ¦ you donβt need to learn anything else. You are already a good programmer. Just kidding. You can learn Elixir or Scala.
Be a good programmer my friend.
happy free comic book day! my store was out of freebies but i got some of my pulls and also a trade of one of my favorite reads last year!

up -d, but then I took a look at a couple of #Snac instances at the last second and they looked pretty dope! Now I'm stuck in my own head π
@bender@twtxt.net Mainly the bsd.cafe ones. I like how the minimalist single column profiles look. Image embeds are full width and reading through threads feels nice (as in it doesnβt feel like pealing layers upon layers of a fresh onion).
Confession:
Iβve never found microblogging like twtxt or the Fediverse or any other βmodernβ social media to be truly fulfilling/satisfying.
The reason is that it is focused so much on people. You follow this or that person, everybody spends time making a nice profile page, the posts are all very βego-centricβ. Seriously, it feels like everybody is on an ego-trip all the time (this is much worse on the Fediverse, not so much here on twtxt).
I miss the days of topic-based forums/groups. A Linux forum here, a forum about programming there, another one about a certain game. Stuff like that. That was really great β and it didnβt even suffer from the need to federate.
Sadly, most of these forums are dead now. Especially the nerds spend a lot of time on the Fediverse now and have abandoned forums almost completely.
On Mastodon, you can follow hashtags, which somewhat emulates a topic-based experience. But itβs not that great and the protocol isnβt meant to be used that way (just read the snac2 docs on this issue). And the concept of βlikesβ has eliminated lots of the actual user interaction. βΉοΈ
Unstoppable Force and Immovable Object
β Read more
7 to 12 and use the first 12 characters of the base32 encoded blake2b hash. This will solve two problems, the fact that all hashes today either end in q or a (oops) π
And increasing the Twt Hash size will ensure that we never run into the chance of collision for ions to come. Chances of a 50% collision with 64 bits / 12 characters is roughly ~12.44B Twts. That ought to be enough! -- I also propose that we modify all our clients and make this change from the 1st July 2025, which will be Yarn.social's 5th birthday and 5 years since I started this whole project and endeavour! π± #Twtxt #Update
that said, and reading to @sorenpeter@darch.dk and @andros@twtxt.andros.dev I have new thoughts. I assume that this wonβt change anyoneβs opinions or priorities, so it makes no harm sharing them.
Itβs always tempting to use something that already exists (like X, Masto, Bsky, etc.) rather that building anything through effort and disagreement until reaching to something useful and valuable together. A βsocial serviceβ is only useful if people is using it.
Iβll add that I havenβt lost interest on the βhackyβ part of twtxt about developing tools, protocols, and extensions as a community. Itβs the appealing part! Itβs a nice hobby to have, shared with random people across the world.
But this is not the right way for me, and makes me feel that Iβm unwelcome to propose something different (after watching replies to my previous twt). Feels like βIf you donβt agree, you are free to leave, weβll miss you.β Naah, not cool. Iβve lived that many times before, and nowadays I donβt have enough spare time and energy for a hobby like that.
Letβs see what happens next with the micro-community!