@prologic@twtxt.net Thatās an interesting premise in that article:
The fun has been sucked out of the process of creation because nothing I make organically can compete with what AI already producesāor soon will.
This is like saying itās pointless to make music yourself because some professional player/audio engineer does a better job. Really, thereās always someone or something thatās better than you at a particular job.
If we focus too much on ācompetitionā, then yes, you can just stop doing anything. I donāt know how common this mindset is, especially among artists or creative people. š¤ I would have assumed that many writers, for example, simply enjoy the process of writing. Am I being too naive once more? š¤£
A programming env for computer/phone, now with tutorials, learning programming, examples, reference docs: https://akkartik.itch.io/carousel
One thing about my design here is that it would no longer incorporate āregexā-based rules like OWASP, mostly because my experience thus far has taught me that these rules are kind of overly sensitive, produce false positives and Iām not sure they are really very effective. For example, why is the point of performing SQL injection detection at the Edge using a WAF if you already handle SQL properly in the first place? (seriously does anyone still construct SQL queries by hand with effectively printf?!)
Also spent the morning continuing to think about a new design for EdgeGuardās WAF. Iām basically going to build an entirely new pluggable WAF that will be designed to only consider Rate Limiting, IP/ASN-based filtering, JavaScript challenge handling, Basic behavioral analysis and Anomaly detection.
The only part of this design Iām not 100% sure about is the Javascript-based challenge handling? š¤ Iām also considering making this into a āproof of workā requirement too, but I also donāt want to falsely block folks that a) turn Javascript⢠off or b) Use a browser like links, elinks or lynx for example.
Hmmm š§
Thanks, @movq@www.uninformativ.de! That seems to be much easier. Itās already implemented in the Python docs as examples of recvmsg(ā¦) and sendmsg(ā¦):
- https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
- https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my SCM_CREDENTIALS sending code didnāt work. :-D
And on a similar note, cross-post from Mastodon:
What I love about HTML and HTTP is that it can degrade rather gracefully on old browsers.
My website isnāt spectacular but I donāt think it looks horrible, either. And itās still usable just fine all the way down to WfW 3.11:
Itās not perfect, but itās usable. And that makes me happy. Almost 30 years of compatibilty.
The biggest sacrifice is probably that I donāt enforce TLS and that HTTP 1.0 has no Host: header, so no vhosts (or rather, everything must come from the default vhost). (Yes, some old browsers send Host:, even though they predate HTTP 1.1. Netscape does, but not IBM WebExplorer, for example.)
(On the other hand, it might completely suck on modern mobile devices. Dunno, I barely use those. š¤Ŗ)
@ About the URL, since it no longer used for hashing there might be no need to change it. I agree that we keep all the parts that already are out there for the most parts. Instead of a contact field you could also just use links like: link = Email mailto:user@example.dk or link = Signal https://signal.me/sthF4raI5Lg_ybpJwB1sOptDla4oU7p[...]
Example: telnet sdf.org 70users/scn/Bibel/Mk/Mk01
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.
@bender@twtxt.net Yes, you right. But is premium for more than that.
I use a feature I love a lot: customising different searches with different themes or links.
Itās easy to understand with an example. I have a search with the name āDjangoā. I set sources: Django documentation, stack overflow, topic āprogrammingā and so on. Itās very quick to find Django solutions.
I also have another way to find my stuff: search my blog and repositories.
I had problems paying for the first mouths, now itās a working tool for me.
@aelaraji@aelaraji.com Lol gts is so popular. But if choicing something with fancy web ui maybe Smithereen is best option. Example instance: https://friends.grishka.com
@prologic@twtxt.net hahahahaha! No, no, no. Every word has its use. But for things like these I like certain reactions. For example, I would have given a āthumbs downā to the original twtxt, and done with it. Now, composing a reply, to simply say āno, thank you.ā, that I donāt like. It seems a waste of space, and it doesnāt ālook goodā. I like to see at least 140 characters! Ha!
āMonosyllabic repliesā refers to responses that consist of a single syllable. These types of replies are typically brief and concise, often used in situations where a simple, direct answer is given. Examples include words like āYes,ā āNo,ā āOkay,ā or āSure.ā
š Can I imply youāre not interested in things like āLIkeā, āReportā, etc?! š
@movq@www.uninformativ.de Agreed, finding the right motivation can be tricky. You sometimes have to torture yourself in order to later then realize, yeah, that was actually totally worth it. Itās often hard.
I think if you find a project or goal in general that these kids want to achieve, that is the best and maybe only choice with a good chance of positive outcome. I donāt know, like building a price scraper, a weather station or whatever. Yeah, these are already too advanced if they never programmed, but you get the idea. If they have something they want to build for themselves for their private life, that can be a great motivator Iāve experienced. Or you could assign āem the task to build their own twtxt client if they donāt have any own suitable ideas. :-)
Showing them that you do a lot of your daily work in the shell can maybe also help to get them interested in text-based boring stuff. Or at least break the ice. Lead by example. The more I think about it, the more I believe this to be very important. Thatās how I still learn and improve from my favorite workmate today in general. Which Iām very thankful of.
@movq@www.uninformativ.de I started with Delphi in school, the book (that we never ever used even once and I also never looked at) taught Pascal. The UI part felt easy at first but prevented me from understanding fundamental stuff like procedures or functions or even begin and end blocks for ifs or loops. For example I always thought that I needed to have a button somewhere, even if hidden. That gave me a handler procedure where I could put code and somehow call it. Two or three years later, a new mate from the parallel class finally told me that this wasnāt necessary and how to do thing better.
You know all too well that back in the day there was not a whole lot of information out there. And the bits that did exist were well hidden. At least from me. Eventually discovering planet-quellcodes.de (I donāt remember if that was the original forum or if that got split off from some other board) via my best schoolmate was like finding the Amber Room. Yeah, reading the ITG book would have been a very good idea for sure. :-)
In hindsight, a console program without the UI overhead might have been better. At least for the very start. Much less things to worry about or get lost.
Hence, Iād recommend to start programming with a console program. As for the language, not sure. But Python is probably a good choice, it doesnāt require a lot of surrounding boilerplate like, say Java or Go. It also does exceptionally well in the principle of least surprise.
@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)
Hereās an example of what you end up with (I donāt follow the feed, but itās in my podās cache) 
@eapl.me@eapl.me I wouldnāt call it natural, it is the way Bluesky decided to handle handles (not meaning to make a pun, or anything). There is no other way, but that.
The bottomline is, there are agreed upon āstandardsā, right? From example, on Yarnd you show as āeapl.meā, from āeapl.meā. A kind of weird redundancy because on twtxt, ever since I started using it, one will expect to see a ānickā (equivalent to a personās first name), from āa domainā (like a surname).
There is nothing holding back someone from giving themselves the nick:
thisismyawesomenickforwhichiwillbeknownforeverandeveritsgreatisntit
But, do we really want that? š
hehe, just catching up on this thread! Iāve replied in another that using periods/dots sounds good to me as itās usual in domains, but perhaps some agreement would be needed. For now I think any character is valid as long as it is not a space.
For example we are using this for PHP twtxt.php#L153
.(s) / dot(s) like @eapl.me are valid? š¤ Or nicks even? š¤
on timeline the mention looks OK. Is there an issue on Yarn?
Itās an interesting topic. For example on Bsky itās natural to allow domains https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial
Although TwiXter only allows (letters A-Z, numbers 0-9 and of underscores)
https://help.x.com/en/managing-your-account/x-username-rules
dm-only.txt feeds. š
by commenting out DMs are you giving up on simplicity? See the Metadata extension holding the data inside comments, as the client doesnāt need to show it inside the timeline.
I donāt think that commenting out DMs as we are doing for metadata is giving up on simplicity (itās a feature already), and it helps to hide unwanted DMs to clients that will take months to add itās support to something named⦠an extension.
For some other extensions in https://twtxt.dev/extensions.html (for example the reply-to hash #abcdfeg or the mention @ < example http://example.org/twtxt.txt >) is not a big deal. The twt is still understandable in plain text.
For DM, itās only interesting for you if you are the recipient, otherwise you see an scrambled message like 1234567890abcdef=. Even if you see it, youāll need some decryption to read it. Iāve said before that DMs shouldnāt be in the same section that the timeline as itās confusing.
So my point stands, and as Iāve said before, we are discussing it as a community, so letās see what other maintainers add to the convo.
@bender@twtxt.net I can fix and make that work in the parser too. But Iām no longer sure how to cater for the general case. Itās too much to support all punctuation whilst at the same time as other contradicting rules. For example you cannot both support . in nicknames and then expect to be able to to end a mention with a . š¤¦āāļø
@andros@twtxt.andros.dev nothing stands still, I agree. I think current twtxt has surpassed the initial specification, while still being relatively backwards compliant/compatible but, for how long?
As for new extensions (DM, for example), they should be OK as long as those working on clients can reach an agreement on how to move forward. That has proven, though, to be a pickle in the past.
@bender@twtxt.net I use it. Itās not the feature I use the most in the fediverse, but I communicate this way with several friends. For example, itās the main way I talk to the original creator of the twtxt-el repository, the way people greet me for the first time or the way they notify me of some bugs in the software I maintain. I can even tell you that itās the main way I talk to some maintainers of the Emacs community. If there are any of you reading my words, speak up!
Why not have the same? There are things I want to say to @prologic@twtxt.net in private, why should I have to send him an email or private IRC? Or an public twt.
Of course, hereās a topic weāve already talked about: what is twtxt for you? For me it will always be a social network, in microblogging format, but an asynchronous way of communicating. And having a tool to control visibility is basic š
I look forward to hearing from you @eapl.me@eapl.me !
si4er3q. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00 or -00:00 must be replaced by Z.
@movq@www.uninformativ.de @aelaraji@aelaraji.com Yes @david@collantes.us It would be good for me, or new developers, if the documentation were agnostic. And if possible with many example cases. Iām fine-tuning the code as you inform me of bugs, trial and error. Itās a lesson to be learned for the future.
yarnd UI/UX experience (for those that use it) and as "client" features (not spec changes). The two ideas are quite simple:
Iād have to write i up in full, but essentially looks a bit like this (contribived examples follow)ā¦
@kat@yarn.girlonthemoon.xyz At the core, you need an ngircd.conf like this:
[Global]
Name = your.irc.server.com
Password = yourfancypassword
Listen = 0.0.0.0
Ports = 6667
AdminInfo1 = Well, me.
AdminInfo2 = Over here!
AdminEMail = forget.it@example.invalid
[Options]
Ident = no
PAM = no
[SSL]
CertFile = /etc/ssl/acme/your.irc.server.com.fullchain.pem
KeyFile = /etc/ssl/acme/private/your.irc.server.com.key
DHFile = /etc/ngircd/dhparam.pem
Ports = 6669
Start it and then you can connect on port 6667. (The SSL cert/key must be managed by an external tool, probably something like certbot or acme-client.)
Iām assuming OpenBSD here. Havenāt tried it on Linux lately, let alone Docker. š
restic for that reason and the fact that it's pretty rock solid. I have zero complaints š
@prologic@twtxt.net I also thought it was a client-server thingy at first and usually it is, I guess, thereās just this workaround:
If it is not possible to install Borg on the remote host, it is still possible to use the remote host to store a repository by mounting the remote filesystem, for example, using sshfs.
jenny really isnāt well equipped to handle edits of my own twts.
For example, in 2021, this change got introduced:
https://www.uninformativ.de/git/jenny/commit/6b5b25a542c2dd46c002ec5a422137275febc5a1.html
This means that jenny will always ignore my own edits unless I also manually edit its internal ājson databaseā. Annoying.
That change was requested by a user who had the habit of deleting twts or moving them to another mailbox or something. I think that person is long gone and I might revert that change. š¤
dm-only.txt feeds. š
@bender@twtxt.net For example:
If you can see this twt in any feedā¦
xxxx-xx-xxTxx:xx:xxZ !<bender https://twtxt.net/user/bender/twtxt.txt> U2FsdGVkX1+QmwBNmk9Yu9jvazVRFPS2TGJRGle/BDDzFult6zCtxNhJrV0g+sx0EIKbjL2a9QpCT5C0Z2qWvw==
It is for you. Any other possibility must be ignore (hidden in your timeline).
If your client doesnāt have the posibility to decrypt the twt, hide all direct message. It is all :)
my main itch with the DMs extensions is that these messages are intended to be private, not public information. Thatās why other extensions make sense, but DMs are another kind of feature.
TwiXter, Mastodon, FB and some other services usually hide the DMs in another section, so they are not mixed with the public timeline.
I find the DM topic interesting, I even made an indie experiment for a centralized messaging system here https://github.com/eapl-gemugami/owl.
Although, as Iāve said a few times here, Iām not particularly interested in supporting it on microblogging, as I donāt use it that much. In the rare case Iāve used them, I donāt have to manage public and private keys, and finally none of my acquaintances use encrypted email.
Nothing personal against anyone, and although I like to debate and even fight, itās not the case here. This proposal is the only one allowing DMs on twtxt, and if the community wants it, Iāll support it, with my personal input, of course.
A good approach I could find with a good compromise between compatibility with current clients and keeping these messages private is āhidingā the DMs in comments. For example:
# 2025-04-13T11:02:12+02:00 !<dm-echo https://dm-echo.andros.dev/twtxt.txt> U2FsdGVkX1+QmwBNmk9Yu9jvazVRFPS2TGJRGle/BDDzFult6zCtxNhJrV0g+sx0EIKbjL2a9QpCT5C0Z2qWvw==
Itās ready š„³! https://dm-echo.andros.dev/
An example: https://dm-echo.andros.dev/generate/?url=https://twtxt.andros.dev/
#twtxt
Fedora change aims for 99% package reproducibility
The effort to ensure that open-source software is reproducible has been gathering steam over the years, and gaining traction with major Linux distributions. Debian, for example, has been working toward reproducible builds for more than a decade; it can now produce official live CDs of the current stable release that are reproducible. Fedora started on the path much later, but it has progressed far enough that the project is now con ⦠ā Read more
Iām also thinking that some kind of tag might be needed to automatically hide twts from unknown extensions. For example our client doesnāt support DMs and always shows the !<nick url><encrypted_message> syntax which is meaningless.
@bender@twtxt.net Can you give some examples? Maybe I can help you
i wonder why my replies to people and sometimes myself come out as @@example.com where the first
This is an example of what I believe every SRE should master and whatever Post Incident Review (PIR) should focus on. Where did the system fail. What are the missing or incomplete Safety Controls.
yep, it looks nice! How could add my URL?
Is it following the same endpoints than https://registry.twtxt.org/swagger-ui/#/users/addUser ?
BTW, I think that the usage section has a wrong base URL or something.
For example if you enter here: https://watcher.sour.is/conv/4rx5iyq
It says to look for this URL: https://watcher.sour.is/conv/4rx5iyq/api/plain/users
Which seems to return the content from https://watcher.sour.is
@prologic@twtxt.net I only buy stuff like that, for example games on GOG.COM. Or simply CDs or DVDs. (Rarely I ābuyā a movie on some popular streaming service, fully aware that this is just ārenting itā.)
But yeah, I sadly have to agree with @bender@twtxt.net. š¢
well, that leads to a long conversation.
Piracy is a difficult topic which is very personal, so I wonāt say much about it.
On writing books, Iāve tried along with other digital products such as courses and videogames, and I got to confess that it has been hard for me.
If it helps, I think it all reaches our expectations on the activity and the result. If royalties is the expectation, itās going to be slow. By 5% of royalties, for a rough example, a huge amount of sales will be required to get a decent āwageā, so Iāve understood of doing it by the side of a normal employment although it has been discouraging and a bit sad.
I have reflected about it in Spanish here: https://sembrandojuegos.substack.com/p/sobre-expectativas-al-crear-juegos
thanks for sharing @xuu@txt.sour.is!
Checking for example https://watcher.sour.is/api/plain/twt or https://registry.twtxt.org/api/plain/tweets, I donāt know whether this syntax is being used by clients or by people. Is it integrated on Yarn in any way? Genuinely asking to know more about it.
If I might throw a quick thought to those working on the registries, it would be nice to have an endpoint with a valid twtxt output (perhaps cached or dumped to a static file) which a client could point to, helping to discover itās content in a way which is compatible with the twtxt spec.
Taking the first twt I found in https://watcher.sour.is/api/plain/twt as an example:
reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt 2025-03-28T00:29:25Z **China bans US logs. 3 billion dollar[...])
it would be something like
TIME <@NICK URL> TWT
2025-03-28T00:29:25Z <@reddit_world_news https://feeds.twtxt.net/Reddit_World_News/twtxt.txt> **China bans US logs. 3 billion dollar[...])
That way you could watch the latest twts with your client, something similar to what we find on Mastodon: https://mastodon.online/public/local
Some support from the clients to separate these ādiscoveryā content, from your following timeline might be required. š¤
Playing multimedia with Dillo
What if you want to use a web browser like Dillo, which lacks JavaScript support and canāt play audio or video inside the browser? Dillo doesnāt have the capability to play audio or video directly from the browser, however it can easily offload this task to other programs. This page collects some examples of how to do watch videos and listen to audio tracks or podcasts by using an external player program. In particular we will cover mpv with yt-dlp which supports YouTube ⦠ā Read more
@kat@yarn.girlonthemoon.xyz Pointers can be a bit tricky. I know it took me also quite some time to wrap my head around them. Let my try to explain. Itās a pretty simple, yet very powerful concept with many facets to it.
A pointer is an indirection. At a lower level, when you have some chunk of memory, you can have some actual values sitting in there, ready for direct use. A pointer, on the other hand, points to some other location where to look for the values oneās actually after. Following that pointer is also called dereferencing the pointer.
I canāt come up with a good real-world example, so this poor comparison has to do. Itās a bit like you have a book (the real value that is being pointed to) and an ISBN referencing that book (the pointer). So, instead of sending you all these many pages from that book, I could give you just a small tag containing the ISBN. With that small piece of information, youāre able to locate the book. Probably a copy of that book and thatās where this analogy falls apart.
In contrast to that flawed comparision, itās actually the other way around. Many different pointers can point to the same value. But there are many books (values) and just one ISBN (pointer).
The pointerās target might actually be another pointer. You typically then would follow both of them. There are no limits on how long your pointer chains can become.
One important property of pointers is that they can also point into nothingness, signalling a dead end. This is typically called a null pointer. Following such a null pointer calls for big trouble, it typically crashes your program. Hence, you must never follow any null pointer.
Pointers are important for example in linked lists, trees or graphs. Letās look at a doubly linked list. One entry could be a triple consisting of (actual value, pointer to next entry, pointer to previous entry).
_______________________
/ ________\_______________
ā ā | \
+---+---+---+ +---+---+-|-+ +---+---+-|-+
| 7 | n | x | | 23| n | p | | 42| x | p |
+---+-|-+---+ +---+-|-+---+ +---+---+---+
| ā | ā
\_______/ \_______/
The āxā indicates a null pointer. So, the first element of the doubly linked list with value 7 does not have any reference to a previous element. The same is true for the next element pointer in the last element with value 42.
In the middle element with value 23, both pointers to the next (labeled ānā) and previous (labeled āpā) elements are pointing to the respective elements.
You can also see that the middle element is pointed to by two pointers. By the ānextā pointer in the first element and the āpreviousā pointer in the last element.
Thatās it for now. There are heaps ;-) more things to tell about pointers. But it might help you a tiny bit.
Hi! For anyone following the Request for Comments on an improved syntax for replies and threads, Iāve made a comparative spreadsheet with the 4 proposals so far. It shows a syntax example, and top pros and cons Iāve found:
https://docs.google.com/spreadsheets/d/1KOUqJ2rNl_jZ4KBVTsR-4QmG1zAdKNo7QXJS1uogQVo/edit?gid=0#gid=0
Feel free to propose another collaborative platform (for those without a G account), and also share your comments and analysis in the spreadsheet or in Gitea.
@prologic@twtxt.net @andros@twtxt.andros.dev
more examples:
2020 Jan1 New Year's Day @yearly
2020 jan 3Mon Dr. Martin Luther King, Jr Day @yearly
2020 feb 3Mon President's Day @yearly
2020 may -1Mon Memorial Day @yearly
2020 jun19 Juneteenth @yearly
2020 jul1 Independence Day @yearly
2020 jul24 Pioneer Day @yearly
2020 sept 1Mon Labor Day @yearly
2020 oct 2Mon Columbus Day @yearly
2020 nov11 Veteran's Day @yearly
2020 nov 4Thur Thanksgiving Day @yearly
2020 dec25 Christmas Day @yearly
2025-01 Fri [ ] Take out Trash @weekly
2024-10-17 Thu [x] (A) Did this and that completed:2024-10-18
2025-10-18
[ ] (A) Submit important papers
[ ] (B) Work on +ProjectB
- some note
2024-10-21
- some notes about things to remember for Monday
[ ] Do that
[ ] Travel the stars
well (insert stubborn emoji here) š, word blog comes from weblog, and microblogging could derivate from āsmaller weblogā. https://www.wikiwand.com/en/articles/Microblogging
Iād differentiate it from sharing status updates as it was done with āfingerā or even a BBS. For example, being able to reply; create new threads and sharing them on a URL is something we could expect from āTwitterā, the most popular microbloging model (citation needed)
I like to discuss it, since conversations usually are improved if we sync on what we understand for the same words.