@lyse@lyse.isobeef.org oooh thatās a good point! woodworking is scary and i donāt have much room for it but i do have SOME room in mind that could work for it⦠i feel like iād just hurt myself in the process though LOL
@kat@yarn.girlonthemoon.xyz Off-topic areas are always a good idea. :-) Web forums often had those. And web forums are actually what I had in mind, @bender@twtxt.net. š (While I do have a certain nostalgia for it now, Usenet has always been a bit weird to me. Canāt really explain why.)
@prologic@twtxt.net In few weeks for sure, I have a couple of features in mind that I would like to implement (DM extension for example but Iāll ask for permission to @arne@uplegger.eu to use his PoC or ask him to contribute to twtxtory directly)
Thatās exactly what came to mind. Even millionaires would simply pay with a credit card for the convenience, and yes, because what kind of a sociopath will carry $3,000 around?! Just one more stumping item to that despicable person list.
@doesnm.p.psf.lt@doesnm.p.psf.lt Because Iām a lazy project manage and I havenāt grooomed the backlog in a while 𤣠Since youāre there, do you mind cleaning it up for me? š
@andros@twtxt.andros.dev Ahh cool! Iāll try following it again 𤣠Mind @-mentioning/linking@twtxt.net the feed again? š
@kingdomcome@yarn.girlonthemoon.xyz i got it a couple weeks ago when i saw it was available i LOST MY MIND lmao
is it like⦠ethical to offer access to certain self hosted services as patreon exclusives. like i wanna offer the IRC client/bouncer i hosted which seems ok i think because iāve seen pico.sh offer their instances of that as paid services. but the other ones i have in mind are alt web frontends for stuff like imgur and pinterest. and i just feel weird about it for some reason. idk iām trying to think of ways to support my server stuff but every time i come up with something it feels weird
i must stop ghosting all my social media except discord and fedi when i am depressed. ghosting is the mind killer
SqliteCache
backend I'm working on here, what are your thoughts regarding mgirations from old MemoryCache
(which is now gone in the codebase in this branch). Do you care to migrate at all, or just let the pod re-fetch all feeds? š¤
@prologic@twtxt.net hm would there be any loss with the re-fetch option? i wouldnāt mind either but iād like to hold onto what i got if possible! but if it IS possible but also really annoying to do iāll just do the re-fetch of feeds because iām lazy af LMAO
@kat@yarn.girlonthemoon.xyz I am sure @prologic@twtxt.net would not mind sending an invite. Ping him!
Got anywhere in mind? š§
@lyse@lyse.isobeef.org The bird in the wallpaper? Thatās a photo from a trip to a local zoo. š This little guy was sitting in one of the bushes and didnāt mind people getting rather close. Full version and more from that day.
Thereās a psychological burden of digital life even heavier than distraction
Comments ā Read more
well, I assume by syntax you mean Gemtext (which I like a lot, my personal blog is built on top of it), so I think it might work for twtxt clientsā¦
I knew of twtxt in Gemini Antenna, so at least the 2017 spec might work on that protocol. I think the main issue with extensions is that they werenāt designed with many URLs and protocols in mind.
Also I have to admit that the Gemini community significantly reduced in the last few years. I donāt know how worth it is to add support for Gemini now.
@eapl.me@eapl.me I agree. The syntax is weird inside Gemini and twtxt is made with the http protocol in mind and Gemini doesnāt work with some extensions.
@movq@www.uninformativ.de Thatās cool! I just canāt justify the amount of space it permanently takes. But it fits nicely with the other gauges you have. And with that in mind, it actually is super tiny.
@eapl.me@eapl.me Interesting, I wasnāt aware that other parts of the world consider them to be a German thing :-)
do you mind sharing a picture ?
I canāt find something similar here, but my wife gave this one last year, and Iāve been using it a bit. Iād say itās useful as youāve shared.
We also have a shared calendar in the kitchen for family events, and itās working great.
@thecanine@twtxt.net I donāt mind the FUTO keyboard either but it is pretty basic. Going to have to try out helio
@andros@twtxt.andros.dev Just before the pandemic, we watched Uncle Bob videos once a week in the lunch break. While almost all of my old teammates agreed with his views, I partially found them to be very odd and even counterproductive.
I didnāt come across John Ousterhout or any of his work before, at least not deliberately. So, this document is my first contact.
I only finished the chapter on comments and I totally agree with John so far. This document just manifests to me how weird Bobās view is on certain subjects.
I always disagreed with the concept of a maximum method length. Sure, generally, shorter functions are probably better, but it always depends. And Iāve certainly seen super short methods that just made the code flow even worse to follow. While āone function should only do one thingā is a nice general rule, Iām 100% in team John with the shown examples. There are cases, where this doesnāt help readability at all. Not even close.
To me, a function always has to justify its existence. Either by reusing it at least at another place or by coming up with dedicated tests for it. But if it is just called once and there are no tests, I almost always decide against it. Personally, I donāt mind longer methods. We just recently had a discussion about that and I lost against two other workmates who are more in Uncle Bobās camp, they refactored one medium sized method into three very short ones. Luckily, we agree on most other topics.
Lol, what!? The shorter the method, the longer the variables inside? I first thought I misread or the writeup mixed it up. Iāll always do it the other way around.
Iāve been also bitten badly by outdated comments in the past, but Bob must have worked on really terrible projects to end up with such an attitude to dislike comments. Oh well. No doubt, Iāve come across by several orders of magnitude more useless comments, in my experience (autogenerated) JavaDocs fall in the category more frequently than not. So, I know that there are different types of comments. A comment doesnāt automatically mean that it is good and justified.
But I also partially agree with Bob and John and think that a good name has a proper chance to save a comment. Though, when in doubt, I go Johnās route and use a shorter name with a comment rather than use a kilometer long identifier. Writing good comments typically takes some time, sometimes much longer than writing the code. It regularly takes me several minutes. Itās a hard art.
I perhaps should read up on Johnās work. He seems to be more reasonable and likeminded. :-) Let me continue to complete this document.
Philadelpia - Long run: 14.22 miles, 00:10:02 average pace, 02:22:39 duration
great long run. had a few places in mind to try and visit (tun tavern, rocky steps, the river thing) and hit them all with not really any idea where they were. pretty much just went tourist mode taking pictures and reading signs. it was so freaking cold! 22F i think. took the beanie off and the sweat had turned to ice, and my torso was all red from the rubbing of my clothes.
#running
Hi James, great to hear your interest. So this is an exclusive roundtable luncheon with people in the IT, Engineering, DevOps and Technical professionals. This is an opportunity to benchmark and share stories and experiences with like-minded peers in a closed-door, Chatham House Rule environment where you will be given the opportunity to speak openly and candidly.
Iām not even sure what half these words mean hmm š§
@sorenpeter@darch.dk It depends on your requirements. If you just want to put your code somewhere for yourself, simply push it over SSH on a server and call it good. Thatās what I do with lots of repos. If you want an additional web UI for read access for the public, cgit comes to mind (a mate uses that). Prologic runs Gitea, which offers heaps more functionality like merge requests.
?
operator in Go š No. For so many reasons.
@prologic@twtxt.net Which one? I donāt mind the ternary operator at all. In fact, I often find myself missing it in Go. I donāt find the two alternatives particularly elegant:
foo := "eggs"
if bar {
foo = "spam"
}
Or:
var foo string
if bar {
foo = "spam"
} else {
foo = "eggs"
}
To my eye, this just would look a lot nicer:
foo := bar ? "spam" : "eggs"
Or at least as the Pythons do it:
foo = "spam" if bar else "eggs"
The ternary operator especially shines with relatively short expressions.
Thereās a reason I avoid speaking my mind on the internet like the plague. The same reason Iād set up a {B,Ph,Gem}log months ago but never got myself to publish any of the drafts in any of them.
I fell asleep again during snoozing, and started dreaming intensely. My own mind woke me up in time by setting everything I loved on fire within my dream. That jolted me awake alright.
After I stripped off my clothes and turned around, I came to the conclusion that the plan to shower was cancelled at this moment. The faucet had broken right off and was laying in the tub. I noticed that the diameters of the hot and cold water pipes were surprisingly small, didnāt expect that. Since the pipes were broken flush with the wall, I couldnāt even determine if I had to remove the inner our outer threads, well, remains thereof, in order to attempt to repair this mess. Luckily, I was going to see a plumber mate at the christmas tree collection later anyway.
The first thing that came to mind when I woke up was that I didnāt catch the logical flaw in my dream: absolutely no water was coming out of the burst pipes. The whole scenario took place in summer, so the water couldnāt be frozen either.
@kat@yarn.girlonthemoon.xyz ah, thanks for letting me know that! iāll def be keeping that in mind.
Pinellas County Running: 3.12 miles, 00:08:53 average pace, 00:27:44 duration
first day of marathon training. i do not have a race in mind but wanted to start training again. was going too fast but 48F and just feeling overall good.
#running
nice! would you mind elaborating a bit?
Is that the scientific method?
I couldnāt find anything related when I searched for it.
@xuu@txt.sour.is ROFLMAO! 𤣠reading that, the Tech bro sounded in my mind like Cow from Cow and Chicken
"twtxtfeevalidator/0.0.1"
UA about? I thought I could ask before throwing a 1000GB file at it šŖ¤ could it be the same 'xt' thing @lyse was talking about the other day?
@lyse@lyse.isobeef.org Oh! no need to be sorry and feel free to keep at it if it helps, I donāt mind. Itās just that Iām always on the lookout for corpo-bots and crawlers slipping through the cracks (a fun little game of sorts) š
the only thing I let them see is a robots.txt telling them to :diffoff
Also, Iām curious about the invalid lines in my feed. is it something I should lookout for in future?
@lyse@lyse.isobeef.org oh nah it came out like that lol! i actually love how squished it looks it feels accurate lol
oh yeah i think i might have a tripod around but i do need a sandbag or something i could use as one. maybe yeah a giant bag of rice could work LOL. thanks for the tips!!! i took a video class last year in college and we worked with cameras and tripods with sandbags so it was on my mind
@andros@twtxt.andros.dev What do you mean by API? yarnd
(which powers Yarn.social pods like twtxt.net) does have an API, however that API is designed for clients to interact with the pod and the userās account and feed. e.g: there is a command-line client called yarnc
and I used to maintain a mobile native app (using Flutter).
What use-case did you have in mind?
@movq@www.uninformativ.de I know, nobody asked 𤔠but, here are a couple of suggestions:
- If youāre willing to pay for a licence Iād highly recommend plasticity itās under
GNU LESSER GENERAL PUBLIC LICENSE, Version 3.
- Otherwise if you already have experience with CAD/Parametric modeling you could give freeCAD a spin, itās under
GNU Library General Public License, version 2.0
, it took them years but have just recently shipped their v1.0 š
- or just roll with Autodeskās Fusion for personal use, if you donāt mind their āOh! You need to be online to use itā thing.
(Letās face it, Blender is hard to use.)
I bet youāre talking about blender 2.79 and older! š you are, right? JK
Fartlek: 7.12 miles, 00:09:56 average pace, 01:10:41 duration
kept it chill the first three miles then took a walk break to lower the heart rate and started off again into a fartlek. the intervals helped because my mind was starting to fuck with me with the steady pace. got some pretty good rain in the last two and a half miles which was great too!
#running
@prologic@twtxt.net I bet our twts are already being fed to circuit monsters⦠Remember the other day when Iād snapped out about some nonsense, being an A-Hole and what not? Iāve seen an AI company employee lurking around with not much interaction (if Iām not mistaken), so my mind went on auto-pilot mode thinking āThis !#@%$ must be feeding us to the circuit peggy monster!! Arrr š¤ā š¤£š¤£š¤£ but then again, one shouldnāt judge a book by itās cover (or an employee by his title) right?
So long Blue Birdy š it was a ⦠Never mind, GTFO of my life already! š
Regarding section 4 about feed discovery: Yeah, non-HTTP transport protocols are an issue as they do not have
User-Agent
headers. How exactly do you envision thediscovery_url
to work, though?
This is from a twt of mine from January 2022:
https://www.uninformativ.de/files/twtxt/2022%2D01%2D22%2D%2Dfollow%2Dendpoint.md
(This idea gets lost all the time, so I put it into a file now. š )
Not sure if this is what @eapl.me@eapl.me had in mind, obviously.
@eapl.me@eapl.me here are my replies (somewhat similar to Lyseās and Jamesā)
Metadata in twts: Key=value is too complicated for non-hackers and hard to write by hand. So if there is a need then we should just use #NSFS or the alt-text file in markdown image syntax

if something is NSFWIDs besides datetime. When you edit a twt then you should preserve the datetime if location-based addressing should have any advantages over content-based addressing. If you change the timestamp the its a new post. Just like any other blog cms.
Caching, Yes all good ideas, but that is more a task for the clients not the serving of the twtxt.txt files.
Discovery: User-agent for discovery can become better. Iām working on a wrapper script in PHP, so you donāt need to go to Apaches log-files to see who fetches your feed. But for other Gemini and gopher you need to relay on something else. That could be using my webmentions for twtxt suggestion, or simply defining an email metadata field for letting a person know you follow their feed. Interesting read about why WebMetions might be a bad idea. Twtxt being much simple that a full featured IndieWeb sites, then a lot of the concerns does not apply here. But thatās the issue with any open inbox. This is hard to solve without some form of (centralized or community) spam moderation.
Support more protocols besides http/s. Yes why not, if we can make clients that merge or diffident between the same feed server by multiples URLs
Languages: If the need is big then make a separate feed. I donāt mind seeing stuff in other langues as it is low. You got translating tool if you need to know whats going on. And again when there is a need for easier switching between posting to several feeds, then itās about building clients with a UI that makes it easy. No something that should takes up space in the format/protocol.
Emojis: Iām not sure what this is about. Do you want to use emojis as avatar in CLI clients or it just about rendering emojis?
Righto, @eapl.me@eapl.me, ta for the writeup. Here we go. :-)
Metadata on individual twts are too much for me. I do like the simplicity of the current spec. But I understand where youāre coming from.
Numbering twts in a feed is basically the attempt of generating message IDs. Itās an interesting idea, but I reckon it is not even needed. Iād simply use location based addressing (feed URL + ā#ā + timestamp) instead of content addressing. If one really wanted to, one could hash the feed URL and timestamp, but the raw form would actually improve disoverability and would not even require a richer client. But the majority of twtxt users in the last poll wanted to stick with content addressing.
yarnd actually sends If-Modified-Since
request headers. Not only can I observe heaps of 304 responses for yarnds in my access log, but in Cache.FetchFeeds(ā¦)
we can actually see If-Modified-Since
being deployed when the feed has been retrieved with a Last-Modified
response header before: https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/cache.go#L1278
Turns out etags with If-None-Match
are only supported when yarnd serves avatars (https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/handlers.go#L158) and media uploads (https://git.mills.io/yarnsocial/yarn/src/commit/98eee5124ae425deb825fb5f8788a0773ec5bdd0/internal/media_handlers.go#L71). However, it ignores possible etags when fetching feeds.
I donāt understand how the discovery URLs should work to replace the User-Agent
header in HTTP(S) requests. Do you mind to elaborate?
Different protocols are basically just a client thing.
I reckon itās best to just avoid mixing several languages in one feed in the first place. Personally, I find it okay to occasionally write messages in other languages, but if that happens on a more regularly basis, Iād definitely create a different feed for other languages.
Isnāt the emoji thing ājustā a client feature? So, feed do not even have to state any emojis. As a user Iād configure my client to use a certain symbol for feed ABC. Currently, I can do a similar thing in tt
where I assign colors to feeds. On the other hand, what if a user wants to control what symbol should be displayed, similar to the feedās nick? Hmm. But still, my terminal font doesnāt even render most of emojis. So, Unicode boxes everywhere. This makes me think it should actually be a only client feature.
@david@collantes.us No worries, I got you. And Iāll keep the āHandle with careā reminder in mind, might even use it as mantra if I ever take an arrow in the knee š
It is past 16:00 ET, and so the weekend begins. Here is to hoping it transcurs slowly in our mindsāor, at the very minimum, in mine.
@bender@twtxt.net @prologic@twtxt.net Iām not exactly asking yarnd to change. If you are okay with the way it displayed my twts, then by all means, leave it as is. I hope you wonāt mind if I continue to write things like 1/4
to mean āfirst out of fourā.
What has text/markdown
got to do with this? I donāt think Markdown says anything about replacing 1/4
with ¼, or other similar transformations. Itās not needed, because ¼ is already a unicode character that can simply be directly inserted into the text file.
Whatās wrong with my original suggestion of doing the transformation before the text hits the twtxt.txt file? @prologic@twtxt.net, I think it would achieve what you are trying to achieve with this content-type thing: if someone writes 1/4
on a yarnd instance or any other client that wants to do this, it would get transformed, and other clients simply wouldnāt do the transformation. Every client that supports displaying unicode characters, including Jenny, would then display ¼ as ¼.
Alternatively, if you prefer yarnd to pretty-print all twts nicely, even ones from simpler clients, thatās fine too and you donāt need to change anything. My 1/4
-> ¼ thing is nothing more than a minor irritation which probably isnāt worth overthinking.
@off_grid_living@twtxt.net mind sharing the PDF, to take a look? Some PDF containing text as images, which makes it more difficult to complete the task you want to perform.
@bender@twtxt.net Soā¦
() @xuu@txt.sour.is wrote:
ā@bender I am also in camp no edit signals. deletes only breaks the head of a thread. all the replies are unaffected.ā
I figure I could also answer every single twtxt like this, so that if the original gets edited, or deleted, at least I donāt sound foolish without knowing exactly what I replied to. š¤
It Sounds like a good idea! should that be limited to just direct replays or can it be extended to replays
to other replays, that way and With just the right amount of chain-replays, weāll be RRrrrrrevolutionizing the way people Mailing Lists
like, in no time! xD
P.S: Just a reminder! Iāve already told you not to mind my twts for the next couple of hours, right!
as a matter of fact! donāt mind anything I do/say for the next 72 hours xD
Donāt mind this twt!
Hurricane Helene is passing by. Close enough to give us a day off tomorrow, but not that close to cause major harm. Well, we think. Hurricanes often have a mind of their own, and decide changes on their path. Either way, I shall be back at work on Friday š©. LOL.
@prologic@twtxt.net Thanks for writing that up!
I hope it can remain a living document (or sequence of draft revisions) for a good long time while we figure out how this stuff works in practice.
I am not sure how I feel about all this being done at once, vs. letting conventions arise.
For example, even today I could reply to twt abc1234 with ā(#abc1234) Edit: ā¦ā and I think all you humans would understand it as an edit to (#abc1234). Maybe eventually it would become a common enough convention that clients would start to support it explicitly.
Similarly we could just start using 11-digit hashes. We should iron out whether itās sha256 or whatever but thereās no need get all the other stuff right at the same time.
I have similar thoughts about how some users could try out location-based replies in a backward-compatible way (append the replyto: stuff after the legacy (#hash) style).
However I recognize that Iām not the one implementing this stuff, and itās less work to just have everything determined up front.
Misc comments (I havenāt read the whole thing):
Did you mean to make hashes hexadecimal? You lose 11 bits that way compared to base32. Iād suggest gaining 11 bits with base64 instead.
āClients MUST preserve the original hashā ā do you mean they MUST preserve the original twt?
Thanks for phrasing the bit about deletions so neutrally.
I donāt like the MUST in āClients MUST follow the chain of reply-to referencesā¦ā. If someone writes a client as a 40-line shell script that requires the user to piece together the threading themselves, IMO we shouldnāt declare the client non-conforming just because they didnāt get to all the bells and whistles.
Similarly I donāt like the MUST for user agents. For one thing, you might want to fetch a feed without revealing your identty. Also, it raises the bar for a minimal implementation (Iām again thinking again of the 40-line shell script).
For āwho followsā lists: why must the long, random tokens be only valid for a limited time? Do you have a scenario in mind where they could leak?
Why canāt feeds be served over HTTP/1.0? Again, thinking about simple software. I recently tried implementing HTTP/1.1 and it wasnāt too bad, but 1.0 would have been slightly simpler.
Why get into the nitty-gritty about caching headers? This seems like generic advice for HTTP servers and clients.
Iām a little sad about other protocols being not recommended.
I donāt know how I feel about including markdown. I donāt mind too much that yarn users emit twts full of markdown, but Iām more of a plain text kind of person. Also it adds to the length. I wonder if putting a separate document would make more sense; that would also help with the length.