@lyse@lyse.isobeef.org WTH.. i cant reply to this?
@lyse@lyse.isobeef.org interesting⦠ill look into the parsing on that one
@lyse@lyse.isobeef.org interesting⦠ill look into the parsing on that one
@prologic@twtxt.net Alright, thereās some erroneous markdown parsing going on, I reckon. In my original twt I have a code block surrounded by three backticks. The code block itself contains a single backtick. However, at least for rendering, yarnd shows three backticks instead (not sure if my markdown is invalid, though):

@marado@twtxt.net I call it twittertext and twt is pronounced tweet
@mckinley@twtxt.net Thank you! I didnāt even know about signing and encrypting XML documents. Right, RSS is a little bit messy.
Unfortunately, the autodiscovery document in one of your linked resources does not exist anymore. What annoys me in Atom is the distinction between <id> and <link>. I always want my URL also to be my ID, so I have to duplicate that ā unnecessarily in my opinion.
Also, never found a good explanation why I should add <link rel="self" ⦠/> to my feeds. I just do, but I donāt understand why. The W3C Feed Validation Service says:
[ā¦] This value is important in a number of subscription scenarios where often times the feed aggregator only has access to the content of the feed and not the location from which the feed was fetched.
This just sounds like a very questionable bandaid to bad software architecture. Why would the feed parser need access to the feed URL at this stage? And if so, why not just pass down the input source? Just doesnāt make sense to me.
Also, I just noticed that I reference the http://purl.org/rss/1.0/modules/syndication/ namespace, but donāt use it in most of my feeds. Gotta fix that. Must have copied that from my yfav feed without paying attention what Iām doing.
Your article made me reread the Atom spec and I found out, that I can omit the <author> in the <entry> when I specify a global <author> at <feed> level. Awesome! Will do that as well and thus reduce the feed size.
Atom vs. RSS: https://mckinley.cc/blog/20221109.html
cc @movq@www.uninformativ.de @lyse@lyse.isobeef.org @nmke-de@yarn.zn80.net
It only took me 5 days :)
@tkanos@twtxt.net user in question had posted information about someones employment in what appeared to be a threat to contact their boss. Maybe it was in jest.. but we felt it was a form of doxing that we do not wish to see within our community. Yarn.Social is first and foremost a town square of ideas and should be viewed as a safe place for all.
@prologic@twtxt.net that is serious matter . Can you provide more inputs ? Is it part of the doxing part ?
@jlj@twt.nfld.uk @xuu@txt.sour.is hello! @prologic@twtxt.net and I were chatting about the question of globally deleting twts from the yarn.social network. @prologic@twtxt.net noted that he could build the tools and endpoints to delete twts, but some amount of cooperation from pod operators would be necessary to make it all work together. He asked me to spawn a discussion of the subject here, so here we are!
I donāt have enough technical knowledge of yarn.social to say with any credibility how it all should work, but I can say that I think it ought to be possible and itād be good to do for those rare times when itās needed.
Esta es una prueba de escribir el archivo twtxt.txt con la zona horaria de Ciudad de México. ¿FuncionarÔ?
@mckinley@twtxt.net any points if it was written in D?
@prologic@twtxt.net Itās called ācgodā and it isnāt written in C or Go? I want my money backā¦
I also like Gopher more than Gemini. The problem Gemini is trying to solve is better solved by just writing static HTML 4.01 pages.
@lyse@lyse.isobeef.org, fixed. š
Last-Modified header for your feed, so the official twtxt client complains not to cache it. I just fixed that, so that tt shows your feed (of course no progress has been made in the meantime). And the Date header of your server seems to be quite funny, too. ;-)
@lyse@lyse.isobeef.org, hey, thank you! :-) Yeah, I am abusing the headers on ferengi.one, sorry about that. Will change it. You know, because Lyse.
yarns will get reused directly into yarnd, except that I'll use the bluge indexer instead.
@prologic@twtxt.net, search for āquarkā and you will get quack, quart, quirk, and all possible iterations. Not too helpful.
@movq@www.uninformativ.de, well, yes, that has always been the case. Not just on jenny, but on Yarn. I canāt follow everything, and everyone. To see whether is a reply, a simple h on mutt shows the headers, and there you have it. That is not too convoluted, is it? I mean, if you really want to knowābut why?āit is a simple key press. If I donāt see a context on something as obvious as the example you used, it is simply a reply to someone I donāt follow, and pretty much ignore. End of story. š
Welcome back, @quark@ferengi.one! Your web server doesnāt send back a Last-Modified header for your feed, so the official twtxt client complains not to cache it. I just fixed that, so that tt shows your feed (of course no progress has been made in the meantime). And the Date header of your server seems to be quite funny, too. ;-)
@prologic@twtxt.net, business is slow (I also just got off that hyoo-mƤn illness that is going around named COVID), so that leaves me some free time on my entrepreneurial hands. š I have always lurked every couple of weeks or so. I see yarn has regressed on the UI! š¬š©
@quark@ferengi.one Hey š Nice to see you around again š¤
@movq@www.uninformativ.de, any plans still to clean up the hash from the twtxtās body? Maybe a Festivus gift? You know, āfor the rest of usā. :-D
š£ NEW: Announcing the new and improved Yarns search engine and crawler! search.twtxt.net ā Example search for āHello Worldā Enjoy! š¤ ā @darch@neotxt.dk When you have this, this is what we need to work on in terms of improving the UI/UX. As a first step you should probably try to apply the same SimpleCSS to this codebase and go from there. ā In the end (didnāt happen yet, time/effort) most of the code here in yarns will get reused directly into yarnd, except that Iāll use the bluge indexer instead.
SMTP_PORT to be set (used to default toi 25) ooops š
@prologic@twtxt.net Liberaās insistence on giving them an e-mail and my real IP address makes me really not want to give them either one. Otherwise, Iād probably talk in IRC regularly.
@abucci@anthony.buc.ci Do you happen to use Signal btw? š¤ If you do, it would be great if you could join the Yarn.social Signal Group (_at least until we have Group support and better apps for Salty.im š )
I think Email has been broken on my Pod since some time now since @lyse@lyse.isobeef.org made this commit the default behaviour of the flags/env had changed requiring SMTP_PORT to be set (used to default toi 25) ooops š
@eaplmx@twtxt.net CSS Battle has a passwordless login, I donāt know the implementation but it basically send you and email where you click a link and youāre in.
@xuu@txt.sour.is proof of stake = people with money get more money. It accelerates the wealth inequality problems that are already plaguing us. Crypto has even worse wealth inequality than fiat currency systems, which is 100% predictable.
@brasshopper@twtxt.net bitcoin 𤮠thatās a hard no from me
@eapl.mx@eapl.mx Hola amigo, it seems to work :)
Se me estÔ ocurriendo hacer una visualización de twtxt.txt en HTML para que sea mÔs fÔcil de observar⦠pensando
Se me estÔ ocurriendo hacer una visualización de twtxt.txt en HTML para que sea mÔs fÔcil de observar⦠pensando
@prologic@twtxt.net what Content-Security-Policy should I have on my web server for salty? the frontend aināt reacting well to my global config lol
evalerror: refused to create a webassembly object because āunsafe-evalā is not an allowed source of script in the following content security policy directive: ādefault-src āselfāā.
<<
@jason@jasonsanta.xyz Hey Jason! Welcome to the twtxtverse!
@mckinley@twtxt.net really the language authors should have added those to the standard spec by now. That is just obscene.
@abucci@anthony.buc.ci Dependendies suck š
Too many moving parts š¤¦āāļø
@abucci@anthony.buc.ci Its not better than a Cat5e. I have had two versions of the device. The old ones were only 200Mbps i didnāt have the MAC issue but its like using an old 10baseT. The newer model can support 1Gbps on each port for a total bandwidth of 2Gbps.. i typically would see 400-500Mbps from my Wifi6 router. I am not sure if it was some type of internal timeout or being confused by switching between different wifi access points and seeing the mac on different sides.
Right now I have my wifi connected directly with a cat6e this gets me just under my providers 1.3G downlink. the only thing faster is plugging in directly.
MoCA is a good option, they have 2.5G models in the same price range as the 1G Powerline models BUT, only if you have the coax in wall already.. which puts you in the same spot if you donāt. You are for sure going to have an outlet in every room of the house by code.
@prologic@twtxt.net odd is it maybe a wrong mime type thing? Should be text/calendar. Some http servers can mistakenly mark them application/octet-stream
@movq@www.uninformativ.de the real question is⦠Can it ScreamTracker3?
@lyse@lyse.isobeef.org hah! I cut some out to fit into my pods 4k limit.
Yeah that does studder a bit. To be honest I have no idea what I was thinking there. This excerpt was written a good year ago.
@prologic@twtxt.net I think we could use deltachats new decentralising app format for it: https://delta.chat/en/2022-06-14-webxdcintro
@lyse@lyse.isobeef.org I do wonder how we could build a decentralized way to do this š¤
@prologic@twtxt.net and others, video call tomorrow/tonight?
š Hello @burglar@txt.sour.is, welcome to txt.sour.is, a Yarn.social Pod! To get started you may want to check out the podās Discover feed to find users to follow and interact with. To follow new users, use the ⨠Follow button on their profile page or use the Follow form and enter a Twtxt URL. You may also find other feeds of interest via Feeds. Welcome! š¤
@prologic@twtxt.net correct type parameters. š
@mckinley@twtxt.net Haha, while composing I was wondering two or three times whether I should throw my thoughts in an HTML page instead. But out of utter laziness I discarded that idea. ĀÆ_(ć)_/ĀÆ
@prologic@twtxt.net Error handling especially in Go is very tricky I think. Even though the idea is simple, itās fairly hard to actually implement and use in a meaningful way in my opinion. All this error wrapping or the lack of it and checking whether some specific error occurred is a mess. errors.As(ā¦) just doesnāt feel natural. errors.Is(ā¦) only just. I mainly avoided it. Yesterday evening I actually researched a bit about that and found this article on errors with Go 1.13. It shed a little bit of light, but I still have a long way to go, I reckon.
We tried several things but havenāt found the holy grail. Currently, we have a mix of different styles, but nothing feels really right. And having plenty of different approaches also doesnāt help, thatās right. I agree, error messages often end up getting wrapped way too much with useless information. We havenāt found a solution yet. We just noticed that it kind of depends on the exact circumstances, sometimes the caller should add more information, sometimes itās better if the callee already includes what it was supposed to do.
To experiment and get a feel for yesterdayās research results I tried myself on the combined log parser and how to signal three different errors. Iām not happy with it. Any feedback is highly appreciated. The idea is to let the caller check (not implemented yet) whether a specific error occurred. That means I have to define some dedicated errors upfront (ErrInvalidFormat, ErrInvalidStatusCode, ErrInvalidSentBytes) that can be used in the err == ErrInvalidFormat or probably more correct errors.Is(err, ErrInvalidFormat) check at the caller.
All three errors define separate error categories and are created using errors.New(ā¦). But for the invalid status code and invalid sent bytes cases I want to include more detail, the actual invalid number that is. Since these errors are already predefined, I cannot add this dynamic information to them. So I would need to wrap them Ć la fmt.Errorf("invalid sent bytes '%s': %w", sentBytes, ErrInvalidSentBytes"). Yet, the ErrInvalidSentBytes is wrapped and can be asserted later on using errors.Is(err, ErrInvalidSentBytes), but the big problem is that the message is repeated. I donāt want that!
Having a Python and Java background, exception hierarchies are a well understood concept Iām trying to use here. While typing this long message it occurs to me that this is probably the issue here. Anyways, I thought, I just create a ParseError type, that can hold a custom message and some causing error (one of the three ErrInvalid* above). The custom message is then returned at Error() and the wrapped cause will be matched in Is(ā¦). I then just return a ParseError{fmt.Sprintf("invalid sent bytes '%s'", sentBytes), ErrInvalidSentBytes}, but that looks super weird.
I probably need to scrap the āparent errorā ParseError and make all three āsuberrorsā three dedicated error types implementing Error() string methods where I create a useful error messages. Then the caller probably could just errors.Is(err, InvalidSentBytesError{}). But creating an instance of the InvalidSentBytesError type only to check for such an error category just does feel wrong to me. However, it might be the way to do this. I donāt know. To be tried. Opinions, anyone? Implementing a whole new type is some effort, that I want to avoid.
Alternatively just one ParseError containing an error kind enumeration for InvalidFormat and friends could be used. Also seen that pattern before. But that would then require the much more verbose var parseError ParseError; if errors.As(err, &parseError) && parseError.Kind == InvalidSentBytes { ⦠} or something like that. Far from elegant in my eyes.
@prologic@twtxt.net can Yarn pods be consumers to other yarn pods?
@abucci@anthony.buc.ci I think so. IndieAuth is what Iām a big fan of. All Yarn pods are IndieAuth providers for example (if there are any concumsers out there, we have to work on a consumer ourselvesā¦)
Hi, I am playing with making an event sourcing database. Its super alpha but I thought I would share since others are talking about databases and such.
Itās super basic. Using tidwall/wal as the disk backing. The first use case I am playing with is an implementation of msgbus. I can post events to it and read them back in reverse order.

I plan to expand it to handle other event sourcing type things like aggregates and projections.
Find it here: sour-is/ev
@prologic@twtxt.net @movq@www.uninformativ.de @lyse@lyse.isobeef.org