# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 423
# self = https://watcher.sour.is?uri=https://twtxt.andros.dev&offset=423
# prev = https://watcher.sour.is?uri=https://twtxt.andros.dev&offset=323
@aelaraji πŸ˜‚
@aelaraji I love them! Now I want to be emperor of the universe :P
I decided to use Imagor to optimise and transform the images into a stream. I am very happy with the results!
It is written in Go and is easy to run in Docker.
https://github.com/cshum/imagor
#selfhost
@prologic
I think it is mature enough now: https://isah-twtxt.andros.dev
If anyone is interested in transforming an RSS feed to twtxt using n8n, send me a DM 😜
@bender The DM specification has been updated from time to time in response to advice from the community. For me, It is a successful!
The adoption is another topic πŸ˜‚
(I am working on my side)
I open a discussion thread: why didn't the registers work? Will they work later?
#twtxt
Exciting new for Python 3.14!
t-string, not to be confused with f-string, to avoid malicious code and make life easier for web developers.
https://davepeck.org/2025/04/11/pythons-new-t-strings/
#python
@prologic I won't give you the link for the moment because I want to check how well it works! πŸ˜‹
@prologic Today I learned something new 😁
@prologic Thanks @prologic !
This code displays the last 10 lines of a twtxt feed without a full dowload.

h
FEED_URL="https://twtxt.net/user/prologic/twtxt.txt"
MAX_RANGE=$(curl -sI $FEED_URL | grep -i 'content-length' | awk '{print $2}' | tr -d '\r')
MIN_RANGE=$((MAX_RANGE - 5000))

curl -s --range "$MIN_RANGE-$MAX_RANGE" "$FEED_URL" | grep -v -e '^#' -e '^$' | head -n 10


My self-response!

@prologic @david

#twtxt
Fantastic game! Find 5 dates by looking at 5 photos.
https://whichyr.com/
Proposal: Change the order of twts in the feeds
https://git.mills.io/yarnsocial/twtxt.dev/issues/26
I drop the bomb and leave! πŸ’£ πŸƒβ€βž‘οΈ
#twtxt
@bender 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 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 !
After reading you, @eapl.me, I'll tell you my point of view.
In my opinion, a feed does not have to be equivalent to a timeline. A timeline is a representation of the feed adapted to a user. You may not be interested in seeing other people's threads or DMs. But perhaps they are interested in seeing mentions or DMs directed at them. It is important not to fall into the trap. With that clarification...
I insist, this is my point of view, it is not an absolute truth: I don't think extensions should be respectful of customers who are no longer maintained.
We cannot have a system that is simple, backwards compatible and extensible all at the same time. We have to give up some of the 3 points. I would not like to give up simplicity because it will then make it harder to maintain the customers who do stay. Therefore, I think it is better to give up backwards compatibility and play with new formulas in the extensions. I don't think it's a good idea to make a hash keep so much load: a hashtag, a thread and also a DM.
@movq @aelaraji Yes @david 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.
@prologic Sorry! I have fixed a bug and I edited the feed 🫠
@david If I run


printf '%s\n%s\n%s' 'https://aelaraji.com/twtxt.txt' '2025-04-16T22:49:11+00:00' "Am I tripping or `rsync` is actually THIS effing faster than `scp`!!? 🫨" | b2sum -l 256 | awk '{ print $1 }' | xxd -r -p | base32 | tr -d '=' | tr 'A-Z' 'a-z' | tail -c 8


I have xqfsv6a. It is raw text

But... If I change de date to 2025-04-16T22:49:11Z I have si4er3q.
@prologic @bender

What is the hash of the last message from?: https://aelaraji.com/twtxt.txt
@bender 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 :)
@bender @aelaraji The client should ignore twts if it's not compatible or not addressed to me. it's a simple regex to add! It's similar to Twt Hash Extension, should they be in another file? They are child messages, not flat twt. Not of course!
@prologic @aelaraji It depends! If you are working with rsync and scp with the same protocol... I want to know! 😁
@aelaraji What protocol do you use?
New version release of twtxt-el!

- Fixed many bugs.
- New back buttons.
- Updated documentation.

I am currently fixing an important bug that break the timeline in some cases and I am working around direct messages.

#twtxt #twtxt-el
It's ready πŸ₯³! https://dm-echo.andros.dev/
An example: https://dm-echo.andros.dev/generate/?url=https://twtxt.andros.dev/
#twtxt
@aelaraji Congratulations!!! Happy birtwt! πŸ₯³
@prologic @bender @eapl.me I think opening another file is a bad idea because it adds complexity to the clients, breaks the single feed and I think keeping legacy clients will be more complex to add new features in the future. A modern approach is important.
I'll be honest, I'm a bit tired of the fight around the direct message. Perhaps, we can remove it as an extension and use the alternative @prologic . My suggestion apparently doesn't like to the community. I have no problem with remove it.
@prologic I don't understand. I checked the feed, the twtxt file, and there are no duplicate links. I will follow the next articles πŸ‘οΈπŸ‘οΈβ€. Thank you!
I left XMPP because I found no interactions. Long live IRC!
@movq Nice photo! It is beautiful.
@eapl.me When it is up and running, I promise to add it to the specification. I will also include some corrections.
The nature of twtxt does not allow us to selectively hide clients. It's a problem not with DM, but with any extension.
@prologic Yes, it is a security hole. All dm-echo messages are readable. I intend it to be a debugging tool. Maybe I can include a warning message. If many of you see that it is a serious problem, I can remove the links.
@xuu It's already much better than Mastodon :P . Maybe we can remove the sender and receiver references with an intermediary register.
@prologic @bender πŸ˜‚
@prologic I don't know, maybe it will be useful for someone πŸ˜‡
@bender Yes! I deleted those repeated twts because it was poor execution by my client. They are currently not present in my feed.
Maybe it would be interesting to check if any twt has disappeared?
@eapl.me You asked me for private keys for testing purposes. I have added it to the bottom of this page: https://dm-echo.andros.dev/
It will soon be running. It won't be long now.
Good quote: Β«Corrects in private and congratulates in publicΒ».
Or...: «Corrects in direct message and congratulates in twt» 😜
@bender Can you give some examples? Maybe I can help you
@bender On average, a good news item usually scores 300 points, outstanding ones reach 400... and only the extraordinary ones exceed 600 points. If you want, you can customise it. The source code: https://0x0.st/8pnq.py
@prologic I hope it is as useful to you as it is to me πŸ˜‹
I am pleased to share with you the #twtxt version of my important news alerts: https://n8n.andros.dev/webhook/f0cfd6a6-60c8-4183-a26d-120bbd25a046

Other versions:
Mastodon/Website: https://activity.andros.dev/@important_dev_news
Telegram: https://t.me/important_stories_alert_hacknews

Enjoy!
@dm-echo U2FsdGVkX1+QmwBNmk9Yu9jvazVRFPS2TGJRGle/BDDzFult6zCtxNhJrV0g+sx0EIKbjL2a9QpCT5C0Z2qWvw==
@bender Beautiful cat 😍 What is his name?
@eapl.me You are welcome!
Sometimes, we spend months stuck in inertia, distracted by screens and routine. So I'd like to give you a simple reminder: creating-in whatever form-is what makes you feel alive.

The beauty of working on projects is not in their β€˜success’, but in the simple act of working on them. Whether it's writing, cooking, programming or redecorating the house: play with ideas without pressure, engage in an activity to test, fail and discover without judgement.

In the end, what remains is not a perfect product, but the satisfaction of completion and valuable lessons.

Find a project, no matter how small, and let it take you without expectations.
Good article: Β«Four years of running a SaaS in a competitive marketΒ»
https://maxrozen.com/on-four-years-running-saas-competitive-market
It is a list of lessons from a successful SaaS.
We should look at this thread
https://github.com/snarfed/bridgy-fed/issues/1873
#twtxt
@eapl.me Amazing! πŸ‘
@eapl.me Amazing! πŸ‘
@prologic @eapl.me I want to highlight another social problem: People don't read. Paper industry is a bad moment because people don't pay for books; it does not matter if it is a physical or digital platform. I have this information because I have a good friend who left the industry after publishing a magazine, books and working in an editorial. DRM is a try to give some more money.
@prologic @eapl.me I want to highlight another social problem: People don't read. Paper industry is a bad moment because people don't pay for books; it does not matter if it is a physical or digital platform. I have this information because I have a good friend who left the industry after publishing a magazine, books and working in an editorial. DRM is a try to give some more money.
I have just received the royalties for the last book: 98 euros for the four-month period, about 24 euros a month on average. Not even enough for the gym membership.
If you have to keep some knowledge: don't write for money, the paper (or ebook) industry is in a very bad way, the margins for the author are very small and piracy is devastating.
I have just received the royalties for the last book: 98 euros for the four-month period, about 24 euros a month on average. Not even enough for the gym membership.
If you have to keep some knowledge: don't write for money, the paper (or ebook) industry is in a very bad way, the margins for the author are very small and piracy is devastating.
Amazing! It is a good tool for reading feeds. What you used to calculate the hash?
Amazing! It is a good tool for reading feeds. What you used to calculate the hash?
@bender I taught the whole ecosystem 😁
@prologic @eapl.me The question I was asked the most was: How do I discover people?
Someone came up with a fantastic idea, instead of adding the new twt at the end of the feed, do it at the beginning. So you can paginate by cutting the request every few lines.
@bender I taught the whole ecosystem 😁
@prologic @eapl.me The question I was asked the most was: How do I discover people?
Someone came up with a fantastic idea, instead of adding the new twt at the end of the feed, do it at the beginning. So you can paginate by cutting the request every few lines.
Thank you @python_valencia for letting me show you the secrets of a decentralised plain text social network like twtxt.
I hope you enjoyed the talk! ❀️🐍


#python #twtxt
Thank you @python_valencia for letting me show you the secrets of a decentralised plain text social network like twtxt.
I hope you enjoyed the talk! ❀️🐍


#python #twtxt
I want to present the twtxt feed from Python Valencia: https://twtxt.python-valencia.es/
Technical curiosity: It is generated using n8n, using the official rss.
#welcome
I want to present the twtxt feed from Python Valencia: https://twtxt.python-valencia.es/
Technical curiosity: It is generated using n8n, using the official rss.
#welcome
@david @prologic Sorry! https://cascii.app/
@david @prologic Sorry! https://cascii.app/
@lyse Bad boy! πŸ˜‚ Remember, it is an extension
@lyse Bad boy! πŸ˜‚ Remember, it is an extension
Perfect ASCII diagram builder
#ascii
Perfect ASCII diagram builder
#ascii
A collection of postgreSQL patterns that you can use in other databases
https://mccue.dev/pages/3-11-25-life-altering-postgresql-patterns
#postgresql #databases
A collection of postgreSQL patterns that you can use in other databases
https://mccue.dev/pages/3-11-25-life-altering-postgresql-patterns
#postgresql #databases
@eapl.me Ah! It is still not working.
@eapl.me Ah! It is still not working.
@eapl.me I think the benefits do not outweigh the disadvantages. Clients would have to read and merge the information from 2 txt and a new metadata would have to be added with the address of this file.
Also, it is very easy to filter or ignore it.
@eapl.me I think the benefits do not outweigh the disadvantages. Clients would have to read and merge the information from 2 txt and a new metadata would have to be added with the address of this file.
Also, it is very easy to filter or ignore it.
Anyone interested in the PicoCalc? https://www.clockworkpi.com/product-page/picocalc #basic
Anyone interested in the PicoCalc? https://www.clockworkpi.com/product-page/picocalc #basic
@doesnm πŸ’― πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘
@doesnm πŸ’― πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘πŸ‘
@prologic What is "ciwtuau"? I don't understand, sorry haha
@prologic What is "ciwtuau"? I don't understand, sorry haha
@prologic So it seems!
@prologic So it seems!
yes @lyse πŸ˜…
yes @lyse πŸ˜…
I am working on this: https://dm-echo.andros.dev/
More news coming soon.
#twtxt
I am working on this: https://dm-echo.andros.dev/
More news coming soon.
#twtxt
In a couple of days I'll be giving a talk about #twtxt https://www.meetup.com/es-ES/python-valencia-meetup/events/306769708/
In a couple of days I'll be giving a talk about #twtxt https://www.meetup.com/es-ES/python-valencia-meetup/events/306769708/
The Startup CTO's Handbook
https://github.com/ZachGoldberg/Startup-CTO-Handbook/blob/main/StartupCTOHandbook.md
The Startup CTO's Handbook
https://github.com/ZachGoldberg/Startup-CTO-Handbook/blob/main/StartupCTOHandbook.md
@doesnm What is tt2?
@doesnm What is tt2?
@lyse I had no idea. However, I think we're losing our sense of anonymity. I even started using my real name!
@lyse I had no idea. However, I think we're losing our sense of anonymity. I even started using my real name!
@david You are right! I need to check this problem. Thank you very much!
@david You are right! I need to check this problem. Thank you very much!
@movq I have no doubt that you're not seeing the images correctly πŸ˜€. It's just that it's broken when viewing them, in my case, and analyzing the URLs, I've seen everything I mentioned.
Regarding the hash, you're right. I'll have to investigate what's going on. I'm having a hard time getting the hash generation to work properly.
@movq I have no doubt that you're not seeing the images correctly πŸ˜€. It's just that it's broken when viewing them, in my case, and analyzing the URLs, I've seen everything I mentioned.
Regarding the hash, you're right. I'll have to investigate what's going on. I'm having a hard time getting the hash generation to work properly.
@prologic Can we add a table in twtxt.dev with features of each client?
- Is active?
- Extensions compatibility
- Language
- Multiaccount.
- Mutiuser
And so on...
@prologic Can we add a table in twtxt.dev with features of each client?
- Is active?
- Extensions compatibility
- Language
- Multiaccount.
- Mutiuser
And so on...
@movq The urls of the images are strange! My client crashes to display them, and when I tried some urls, I found a redirect. Ah! And the images had two extensions.
@movq The urls of the images are strange! My client crashes to display them, and when I tried some urls, I found a redirect. Ah! And the images had two extensions.