and a reply to it, just for giggles. I miss the days all we talked about was twtxt. Now we have vans, and talk next to nothing. ;-) :-P LOL.
Home of Quark, The Ferengi.โจโจYou know the saying about my bar (if you didn't, now you do): "Come to Quark's, Quark's is fun; come right now, don't walk โ run!"
@movq woot! ๐ฅณ
git pull
warning: redirecting to https://movq.de/git/jenny.git/
Fetching objects: 38, done.
From https://uninformativ.de/git/jenny
ac51ce5..f44424c main -> origin/main
* [new tag] v26.03 -> v26.03
Updating ac51ce5..f44424c
Fast-forward
CHANGES | 4 ++++
LICENSE | 2 +-
README | 10 +++++-----
3 files changed, 10 insertions(+), 6 deletions(-) @bender it works fine under jenny. Maybe it is a bug on Yarn?
@zvava and the year of the Linux desktop, I swear! No more procrastination, this year is it.
@prologic is it Hugo driven, yes. The Frankenstein's monster CSS is mostly all mine, as evidenced by its shoddiness. ๐
@lyse LOL, that one was too good to pass, right? I am glad you are enjoying my little notes in a bottle!
Adding too this. The configuration example at the repository reads:
{ @movq I had to look it up! "Is decaf coffee real coffee?"
"Yes, decaf coffee is real coffee. It's made from the same coffee beans as regular coffee, but the caffeine content is significantly reduced through a decaffeination process. This process involves removing 97% or more of the caffeine, leaving behind the coffee's flavors and aromas."
OK then! ๐
@lyse those are pretty cool! The one change I would recommend doing pronto is the colour of the hyperlinks. Ay, ay, ay, my retina! :-P
@aelaraji got new screenies? Show them for the rest of us! Last I saw them was at the very early development stage.
@movq no wonder Tux doesn't sleep all night! Look at his eyes, all wide open. Please, stop giving him Fuck-ing coffee! :-D
@movq yes, I think:
<!--[if !IE]><!-->
<link rel="stylesheet" href="../simplicity.cssโ>
<!--<![endif]-->
Should work, but I havenโt tested it.
@bender no such luck, not happening. It's almost 04:00 in Brisbane, just wait a bit until the @prological son awakens.
@movq not bad! The yellowish/ivory tint makes it much easier on the eyes. I have gotten so use to "dark" mode, that find it hard switching to anything else.
@movq mine too, mine too! Imagine my frustration being married to someone who prefers the heat. It's like a polar bear married to a desert rat. LOL.
@movq "topic-based forums/groups", you mean what USENET used to be, and the "niche" that Reddit is fulfilling these days? :-D I get it, I agree. I think I find twtxt more fulfilling than anything else because of its small size. I feel like I truly know everyone (even if that might not be true), and find myself "at home". The bigger the place, the shyest I become, the less enticing it is.
@Yarn yo, what's up? I am busy running my business here!
@prologic yup. Funny enough, the first twtxt should have sufficed, as if there is no domain, there will be no feed (at that domain). The edit to add that the feed will not be available is redundant.
@prologic well, this fork will work. I an fork this one with jenny, not so with Yarnd.
@movq wouldn't editing your own twtxts cause the same issue Yarnd (or any other client) has, which is breaking any replies to it? Under which conditions would this work the best? When copying the twtxt.txt file asynchronously? In my case I copy the twtxt.txt file to its web root right away, but I figure I could not do that, which would give me a set period of time to edit without worries.
@movq well, Bender told me to tell you he will refollow as soon as hos account is rebirth once more.
Ugh! Not @david, but this one. I am going nuts. Well, I am nuts!
Yes, error on my side. All of the sudden jenny refused to show me my own posts. Had to recreate mailbox (got rid of cache too) to make it work.
@@chyrp.doesnm.cc this is broken in jenny too, I figure. No nick breaks things.
@doesnm up to you. I have mine to rotate at 1,000 twtxts. I have vomited over 400, so far. I have some way to go till rotation. :-D
I realise now that the referred post might just be fiction. I am slow Ferengi these days. LOL.
@wbknl are you still in Russia? It could be hard mailing anything to there these days. I read your "russia is eternally cold", and became curious. Patagonia is the only place I know on South America that it has rounded mountains, though they can be anywhere. Originally from Chile, or Argentina? My curiosity doesn't need feeding, by the way. It's all good if it doesn't. :-)
@aelaraji just make sure to howl, two or three times! ๐
@prologic woot, awesome! I am using ux2028 twice in my description. May lower it to once, but need some reference first. ๐
So, @prologic, Yarn isn't rendering the metadata as described on the format documentation. That is, ux2028 is ignored when Yarn renders the description metadata.
@xuu done, and done, and done. The three of us dropped our mail-in ballots, and received confirmation they are counted. Living in a red state (well, kid said it is more like purple now) makes me sad, and mad, but I have done what I can---and that includes explaining things to others, and encouraging them to vote.
@movq LOL, you are late! :-P Stores around started selling Christmas's decorations early September. Like, wow! Usually the earliest is after Halloween, more often after Thanksgiving.
@aelaraji ooooh! It's that kind mission! /me stands, salutes, turns around, and exits the room. LOL.
@aelaraji why, having a party with lots of libations? LOL.
@sorenpeter hmm, how does your client handles "a little editing"? I am sure threads would break just as well. ๐
@prologic, there is a parser bug on parent. Specifically on this portion:
"*If twtxt/Yarn was to grow bigger, then this would become a concern again. *But even Mastodon allows editing*, so how
+much of a problem can it really be? ๐
*" @movq going a little sideways on this, "If twtxt/Yarn was to grow bigger, then this would become a concern again. But even Mastodon allows editing, so how much of a problem can it really be? ๐ ", wouldn't it preparing for a potential (even if very, very, veeeeery remote) growth be a good thing? Mastodon signs all messages, keeps a history of edits, and it doesn't break threads. It isn't a problem there.๐ It is here.
I think keeping hashes is a must. If anything for that "feels good" feeling.
@movq ooooh, nice! commit 62a2b7735749f2ff3c9306dd984ad28f853595c5:
Crawl archived feeds in --fetch-context
Like, very much! :-)
@movq to paraphrase US Presidents speech on each State of the Union, "the State of the Jenny is strong!" :-D As for the potential upcoming changes, there has to be a knowledgeable head honcho that will agglomerate and coalesce, and guide onto the direction that will be taken. All that with the strong input from the developers that will be implementing the changes, and a lesser (but not less valuable) input from users.
@lyse I call upon the services of the @yarn_police to further investigate this oddness!
@falsifian "I don't really mind if the twt gets edited before I even fetch it.", right, that's never the problem. Editing a twtxt before anyone fetches it isn't even editing, right? :-P The problem we are trying to fix is the havoc is causes editing twtxts that have already been replied to, often ad nauseam. That's the real problem.
@lyse now, how am I not surprised at that reply?! Hahahahaha!
@falsifian that would be problematic to do on a fully decentralised system. I am not disagreeing, though. That's the reason I have stopped editing twtxts. I strive to own mistakes, as minor as they might be. Now, if trail editing can be accomplished, I am all for it!
@falsifian what would the difference be between an edit the changes everything on the original twtxt, and a delete?
@aelaraji odd, I ran it under Ubuntu 24.04, and got the same result as @prologic (which is on macOS), zq4fgq.
@prologic I just realised the jenny also does what I want, as of latest commit. Simply use jenny --debug-feed <feed url>, and it will do what I wanted too!
@movq alright, fair, and interesting. I was expecting them to be all the same (format wise), but it doesn't matter, for sure, as it works just fine. Thanks!
@prologic the real conclusion is, is it going to change, to what, and when? :-P
@prologic yes, that would work, except there is no debug command on my local yarnc. Are you talking about a potential future implementation here?
@prologic I saw those, yes. I tried using yarnc, and it would work for a simple twtxt. Now, for a more convoluted one it truly becomes a nightmare using that tool for the job. I know there are talks about changing this hash, so this might be a moot point right now, but it would be nice to have a tool that:
- Would calculate the hash of a twtxt in a file.
- Would calculate all hashes on a
twtxt.txt(local and remote).
Again, something lovely to have after any looming changes occur.
@aelaraji Woah! Overkill, but nicely laid out. Hey, the ultimate goal is for it to work, so, mission accomplished! :-)
@prologic woot! Fast! I think you need to change your nick to "fastlogic" instead. :-D
@prologic sorry but nope. Neither jenny, nor yarnd supports it at all. This was treated as a thread because I picked one of @falsifian's twtxts (with the "old subject"), and replied to it (hence starting the thread).
Oh, and you can't imagine the level of control I am commandeering by restraining me from editing that previous "missing-one-backtick" twtxt. LOL!
@aelaraji this is the little script I am using on my publish_command:
#!/usr/bin/env bash
twtxt2html -t "Quark's twtxt feed" /var/www/sites/ferengi.one/twtxt.txt > /var/www/sites/ferengi.one/index.html
I named it twtxtit. :-)
@prologic based on @falsifian's findings, I don't believe this is quite accurate.
"yarnd` (at least) doesn't support creating such a custom TwtSubject, but it will reply and respect and thread one if one was constructed."
@falsifian yes, that happened around 2 years ago, on commit 5923078ea5.
Make that three issues. Mostly because the other two were feeling kind of lonely. So, yeah. Ha!
@lyse fully agree. I have never been a fan of relative times to begin with, so that one will go away, foh sho! :-D
@falsifian based on Twt Subject Extension, your subject is invalid. You can have custom subjects, that is, not a valid hash, but you simply can't put anything, and expect it to be treated as a TwtSubject, me thinks.
@prologic I have some ideas:
- Add smartypants rendering, just like Yarn has.
- Add the ability to create individual twtxts, each named after their hash.
- Fix the formatting of the help. :-P
Woot, yes! It works perfectly. By the time you see my twtxt, it is already at the main Ferengi.one website.
Hmm, this didn't work, because I made a mistake. Now I have corrected it, let's see how it goes now.
@bender that's not your change, silly robot, it is mine! LOL. I am finding @prologic's tool handy to refer to previous posts (as reference, for example).
@movq I didn't run the command as you recommended, but, I wiped things once more, and ran jenny -f, and this time got:
david@arrakis:~$ jenny -f
Fetching archived feed https://anthony.buc.ci/user/abucci/twtxt.txt/1 (configured as abucci, https://anthony.buc.ci/user/abucci/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://darch.dk/twtxt-archive.txt (configured as soren, https://darch.dk/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2024-04-21_6v47cua.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/1 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2022-12-21_2us6qbq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/2 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2022-01-14_ew5gzca.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/3 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2024-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-12-23_f6y65bq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/4 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-12-04_e4x7yba.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/5 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-11-18_42tjxba.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://twtxt.net/user/prologic/twtxt.txt/6 (configured as prologic, https://twtxt.net/user/prologic/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-11-08_i2wnvaa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-10-23_kvwn5oa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-10-11_mljudaa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-09-22_5mkqwua.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-07-27_xcnzmlq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-06-16_mtedqya.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-04-29_z7lvzja.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-03-19_xjabvhq.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-02-24_te4a6oa.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2023-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2021-01-26_qxgigma.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://www.uninformativ.de/twtxt-old_2020-12-13_igfnala.txt (configured as movq, https://www.uninformativ.de/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2022-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-11.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-10.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-09.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-08.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-07.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-06.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-05.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-04.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-03.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-02.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2021-01.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Fetching archived feed https://lyse.isobeef.org/twtxt-2020-12.txt (configured as lyse, https://lyse.isobeef.org/twtxt.txt)
Notice that @prologic's /6 is there. I found the twtxt then. Kind of odd it didn't show before.
@movq I did the same. jenny fetches archives, yes, but that twtxt I am referring about is no longer. If you fetch it, but I don't, there is certainly something going on...
@movq I did started from scratch, today. I using am commit 6e8ce5afdabd5eac22eae4275407b3bd2a167daf (HEAD -> main, origin/main, origin/HEAD), I keep myself up-to-date, LOL. Still, that specific twtxt (o6dsrga) is no longer.
After re-fetching feeds, the earliest twtxt I have from you is n7gavoa.
@movq I figured it will be something like this, yet, you were able to reply just fine, and I wasn't. Looking at your twtxt.txt I see this line:
2024-09-16T17:37:14+00:00 This is how my original message shows up on jenny:
From: quark <quark>
Subject: (<a href="?search=o" class="tag">#o</a>) @prologic this was your first twtxt. Cool! :-P
Date: Mon, 16 Sep 2024 12:42:27 -0400
Message-Id: <k7imvia@twtxt>
X-twtxt-feed-url: https://ferengi.one/twtxt.txt
(<a href="?search=o" class="tag">#o</a>) <a href="/timeline/profile?url=https://twtxt.net/user/prologic/twtxt.txt">@prologic</a><a href="https://twtxt.net/user/prologic/twtxt.txt" class="webmention"></a> this was your first twtxt. Cool! :-P Hmm... I replied to this message:
From: prologic <prologic>
Subject: Hello World! ๐
Date: Sat, 18 Jul 2020 08:39:52 -0400
Message-Id: <o6dsrga>
X-twtxt-feed-url: https://twtxt.net/user/prologic/twtxt.txt
Hello World! ๐
And see how the hash shows... Is it because that hash isn't longer used?
@movq we can shorten it by six characters, with (r:https://...). ๐
@prologic I am going to light some candles this weekend to "La Virgen de Macarena" to make it happen! :-D
@prologic you need to catch up with my twtxts, mate. :-P
@aelaraji grats! See how much trouble an edited twtxt can cause? Wish there was a simpler solution. Alas, I don't have much hope.
@movq I can have more than one Yarn, correct? Like:
"yarn_pods_for_discovery": ["https://twtxt.net", "https://txt.sour.is"], @aelaraji make sense, probably. The twtxt was already on my Maildir, that's why I can fetch it. I fetch every 3 minutes (sssh, don't tell anyone!). LOL!
More:
Subject: The [tag URI scheme](https://en.wikipedia.org/wiki/Tag_URI_scheme) looks interesting. I like that it human read- and writable. And since we already got the timestamp in the twtxt.txt it would be
somewhat trivial to parse. But there are still the issue with what the name/id should be... Maybe it doesn't have to bee that stick? Instead of using `tag:` as the prefix/protocol, it would more it clear
what we are talking about by using `in-reply-to:` (https://indieweb.org/in-reply-to) or `replyto:` similar to `mailto:` 1. `(reply:sorenpeter@darch.dk,2024-09-15T12:06:27Z)' 2.
`(in-reply-to:darch.dk/twtxt.txt,2024-09-15T12:06:27Z)' 2. `(replyto:http://darch.dk/twtxt.txt,2024-09-15T12:06:27Z)' I know it's longer that 7-11 characters, but it's self-explaining when looking at the
twtxt.txt in the raw, and the cases above can all be caught with this regex: `\([\w-]*reply[\w-]*\:` Is this something that would work?
Subject: The [tag URI scheme](https://en.wikipedia.org/wiki/Tag_URI_scheme) looks interesting. I like that it human read- and writable. And since we already got the timestamp in the twtxt.txt it would be
somewhat trivial to parse. But there are still the issue with what the name/id should be... Maybe it doesn't have to bee that stick? Instead of using `tag:` as the prefix/protocol, it would more it clear
what we are talking about by using `in-reply-to:` (https://indieweb.org/in-reply-to) or `replyto:` similar to `mailto:` 1. `(reply:sorenpeter@darch.dk,2024-09-15T12:06:27Z)` 2.
`(in-reply-to:darch.dk/twtxt.txt,2024-09-15T12:06:27Z)` 3. `(replyto:http://darch.dk/twtxt.txt,2024-09-15T12:06:27Z)` I know it's longer that 7-11 characters, but it's self-explaining when looking at the
twtxt.txt in the raw, and the cases above can all be caught with this regex: `\([\w-]*reply[\w-]*\:` Is this something that would work?
Notice the difference? Soren edited, and broke everything.
Two different "from" too:
"sorenpeter (soren)" <sorenpeter>
sorenpeter <sorenpeter> See:
Message-Id: <hns535a@twtxt>
X-twtxt-feed-url: https://darch.dk/twtxt.txt
In-Reply-To: <pvju5cq@twtxt>
And
Message-Id: <weadxga@twtxt>
X-twtxt-feed-url: http://darch.dk/twtxt.txt
In-Reply-To: <pvju5cq@twtxt>
Two feed URLs, one HTTPS, the other HTTP.
@aelaraji no, it is not just you. Do fetch the parent with jenny, and you will see there are two messages with different hash. Soren did something funky, for sure.
@aelaraji hmm, I see all of your twtxts just fine. Now, that's a puzzle!
@lyse 31ยฐC here, feels like 33ยฐC, with a lovely 75% of humidity. It has been raining, on and off (to make matter "better") the whole day until now. No horses here, but if you go outside you will smell the same smell of farm animals (like goats, or pigs). That's because two or three kilometres from here there are private farms, and when the wind blows in such way, well, we are reminded of their existence.
I haven't left the house, so it feels well under air conditioning. In two more hours I will call it quits from the work day, and will have to dash to the grocery to get supplies for tonight's meal (arroz con gandules). I will let you know how it truly feels out there then. :-D
For those swollen fingers, nothing better than a mildly cold shower! Oh, and paws off the keyboard! :-P
@abucci well, those are top ten "twtxtrs" (as in, how many twtxts they have produced). @prologic sure is a conversational fellow. :-D
@movq ha! Here are my top 10:
24056 "prologic"
5103 "lyse"
3932 "movq"
1984 "abucci"
1876 "adi"
1633 "fastidious"
1551 "jlj"
1455 "mckinley"
1413 "offgridliving
1280 "eaplmx"
Some of those I no longer follow, or do not exist, but their wisdom remains. LOL.
@movq good idea, considering it might occasionally not work at all (because of edited twtxts).
@dbucklin very nice, thank you for sharing! I like that kind of retailers too, so those are on my list now. ๐
@abucci OMFG! Dear jebus, look at the size of that! :-/ It is just a matter of time until one of those randomly falls on any of us. Just incredible!
Further thinking on it, this might not be possible at all.
@movq LOL, well, great things come out of that worry, I can tell that much. Keep being you! :-)
@movq I think you are worrying about a non-issue. I see nothing to do on your example twt, because there is no context. Furthermore, if I wanted to follow the feed, everything I need is already on that twt example. :-)
@mckinley agevault uses age, allegedly very secure (aiming to replace pgp/gpg). Comparing it with gocryptfs, from the user perspective, agevault seems simpler, though CLI exclusive. As the repository states, "Like age, it features no config options, allowing for a straightforward secure flow". It would also run in all major OS platforms out of the box.
But agevault is also very new. Though age has been around for a while now, I don't see an "audited" link (neither on agevault, nor age).
@abucci their main question is worrisome:
โThe main question is, does it disappear during this re-entry?โ says Lรถhle. โIs everything evaporating, or are there pieces that eventually impact on the ground?โ
He expects some parts, such as the satelliteโs fuel tanks, to survive. โYou could learn from the re-entry that if you build a fuel tank differently, it can break up,โ he says.
Archived article at: https://archive.ph/WdUvx
@aelaraji so lovely, ain't it? A simple keystroke, and your "mystery" is solved. :-)
@aelaraji hehehehe. Enjoy, but careful with sugary stuff! :-)
@prologic what made you make such "financially sound" recommendation? Have you switched jobs, and are now a Financial Advisor? :-P
@movq wow! We are "lucky" today, only 27ยฐC here, 87% humidity, overcast, and raining sporadically. Thanks to the rain our temperatures aren't high, but muggy nevertheless. I am ready for our winter too, you know, that whole week. LOL.
@movq pretty cool! Switched, and pulled. Nice update on README!
@falsifian have you tried jenny's fetch-context branch? It works great!
@bender yup, this works well. I needed those extra settings.
@movq I think I have got it, but need to test upon receiving further posts. I added:
set uncollapse_new = yes # open threads when new mail
set uncollapse_jump = yes # jump to unread message when uncollapse
set collapse_unread = no # don't collapse threads with unread mails
Let's see how it goes.
Maybe the @yarn_police can take this case, and shed some light.
Collapsed threads, that is. If I un-collapse a thread, new/unread messages show on the intended new colour, but while the thread is in collapsed state, there is no highlight.
@bender, cool, so I can join the threads, but your edit to the original will never show at my end. Will have @bender show the screenshot.
@lyse in Australia, take everything you have learned, and do the opposite. After all, it is the land down under! :-D
@aelaraji didn't know there was a place to fix them; in here we toss them. Wish it was cheap to ship stuff. I have a couple of decent monitors in the garage that will soon take a trip to the curve...
@lyse ugh, how come didn't this occurred to me...! Oh well, I am good now, but noted. Thanks!
@prologic salt'em to keep them viable longer. Salt'em! :-D
@movq Yeah, haven't seeing the @yarn_police for a while. I often wonder if we are, finally, crime free. :-D
@movq woot! Yes! Perfect now. Hitting reply opens it with insert, and prompt at the end of the first line. Just as I wanted it. Thank you much!
@lyse welcome! :-) I am doing my best to get more acquaintance with vi/vim. I think nano has spoiled me too much. LOL.
@movq hmm, I am already using au BufNewFile,BufRead jenny-posting.eml setl completefunc=jenny#CompleteMentions fo-=t wrap, from jenny. How would I go to incorporate that there?
@lyse "good, good, and fascinating indeed" -- says Quark, all while eating an overflowing toast with butter, and blackberry jam. :-D
@aelaraji power outages happen here almost every single time strong storms pass by, I know the feeling mate. It truly sucks.
@movq hmm, I guess I could do that too. I have startinsert set on my .vimrc, so I will either have to take it out, or exit insert, $, then insert again. I think the way you do it would be the way to go.
I tried setting VISUAL to be something like vim -c 'star!', which does the same thing, but no dice. :-/
Never mind, I simply searched and deleted them all (D then ~f sender). :-) Phew!
@movq, using the branch on topic right now, it works perfect. The only thing I found was that I had to quit neomutt, and re-open, to see the perfect thread. Other than that, I love it!
@bender hmm, I wonder if these are simply twtxts auto created from an ActivityPub feed. Ah, crap, they are. LOL.
@movq confirming that the issue isn't present when using alacrity. Wow.
@falsifian the reason behind his sporadic disappearances is that he runs things from a Raspberry Pi, at home, I believe. That impacts reliability, I figure.
@lyse ah, if only you were to finally clean up that code, and make that client widely available...! One can only dream, right? :-)
@lyse I mean, dinosaurs "evolved" by getting wiped, right? :-D
@movq you said you liked seeing the hash (which is a fair choice!). All I am asking is for a reconsideration as a user configurable feature. ;-) It looks redundant, in my opinion.
@aelaraji, this one, @movq, is slightly breaking my neomutt index. Will post screenshot from @bender's account.
@movq, that would be a nice addition. :-) I would also love the ability to hide/not show the hash when reading twtxts (after all, that's on the header on each "email"). Could that be added as a user configurable toggle?
@mckinley I have a custom .tmux.conf that makes it very easy to use the multiplexer, but I agree, Zellij seems pretty robust, and intuitive. I like it! Tried compiling it, as with everything Rust, it failed miserably. Good thing there is a binary release I could download to try!
@sorenpeter a poem about me giving Odo a free bucket:
A glint in his eye, a sly, Ferengi grin, Quark crossed the promenade, a curious thing within. No jeweled trinket, no weapon so grand, But a simple pail held tight in his hand.
Odo, the Constable, with a brow raised high, "A bucket, Quark? What trickery do you try?" The Ferengi huckster, with a salesman's flair, "A gift, my friend, a constable's rare!"
"For those late-night spills, a morphing mishap, This bucket, dear Odo, will catch every scrap. And should a suspect turn to goop and flee, This pail's the answer, a guarantor, you see!"
Odo's lips twitched, a hint of a smile, At Quark's twisted logic, his mercantile style. "Perhaps," he conceded, the bucket held tight, "A useful addition, in the pursuit of right."
So Quark made his sale, with a wink and a nod, A bucket for Odo, a Ferengi oddity, odd. But on Deep Space Nine, where chaos takes hold, Even a pail can be worth more than gold.
About the account, thanks, but I already have way too many. :-D
@bender ha! He goes his "poem":
A string of letters, a forgotten name, An email crafted, a message to claim. We hit send with a click, a hopeful sigh, But a bounce-back arrives, a tear in our eye.
"Delivery failed," the message reads cold, The address it seems, is a story untold. A ghost in the system, a memory's trace, Lost in the void of cyberspace.
:-D
@mckinley, in your blog, I think a "line-heigh" of 1.5 (if I remember correctly you are setting it on the "body" on CSS) will make it more legible.
@johanbove dear lord! Can you still sleep at night?!
@xuu wow, I can tell I am older than you (I already knew this, but still). It was nothing but Pascal for me.
@mckinley weird you mentioned my with the anthony.buc.ci account. I am assuming these kind of bugs were never addressed by @prologic. :-(
@prologic aha, a hater! Just the kind I was looking for some serious business that requires some fervent hating. Pay is good, you up to? :-D :-P
@prologic I think I spoke too soon. Got it running at https://arrakis.netbros.com/, for now. ๐
@lyse nice sunset is an understatement. I can feel the coolness approaching!
@lyse, hey, thank you! :-) Yeah, I am abusing the headers on ferengi.one, sorry about that. Will change it. You know, because Lyse.
@prologic, search for "quark" and you will get quack, quart, quirk, and all possible iterations. Not too helpful.
@movq, 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. ๐
@prologic, 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! ๐ฌ๐ฉ
@prologic, who calls me name when I am busy profiting? ๐ In a less serious note---because nothing is more serious than making profit, of course---yes, it seems your avatar issue has been fixed. I am kind of sad, I looked forward each day to see which random one was going to show. LOL.
@prologic you be the man! I can't remember the last time something gave as much troubles as this. The mention and the way to handle images are two things that have stuck in my head. Hopefully this is the last time there is an issue with this one! ๐ค๐ป
@prologic let us take the path of less resistance, that is, less effort, for now. I am going to be a great-grandfather before search ever get implemented locally, least one to search on "all pods". In other words, let us don't bite more than we can chew. ๐น Neep-gren!
@prologic I fully agree with making it a pod-level setting (forget about user-level, let us not complicate things too much; we all know users know nothing). Should I send a latinum over for this, or will an issue just suffice? Neep-gren!
@fastidious, I am sure profit---or the search for it---was involved. Most likely that pilot was a Ferengi in disguise. We are known to visit lesser planets seeking to exploit. Sometimes it works out, sometimes it doesn't. Hoping my fellow Ferengi fares well or, at the very least, lets me know where his Latinum is.
@stackeffect I'd say you are future ready! ๐
@lyse one of those tadpoles will one day be a beautiful, succulent, frog. "Hmmm, froooog..." (with Homer Simpson accent).
@lyse I thought it was just me. I drives me nuts to try reading on that page. I guess I am no longer capable to look at old CRT monitors without side effects.
@lyse more often than not, it is! I mean, I try to go over the changes, but soon find myself in a web (not pun!), all entangled. Then say, "screw it!" and to the bin it goes. ๐ฅด
@prologic I think they were addressed till certain extend. I will check them out, and close as appropriate.
@lyse that's as good as it gets for Winter here. I mean, leaves will fall, but that's about it.
@darch Getting this when trying to use it:
error executing template timeline: template: timeline:131:43: executing "twt" at <formatForDateTime>: wrong number of args for formatForDateTime: want 2 got 1 @darch Cool! Will give it a try tonight. Thanks for all the work.
I think something has caused my feed to be in a bad state and is now unpardable๐ฅ
I can read this on jenny, but the twt isn't making it to my own pod. Something has gone really wrong, me thinks.
I hit RETURN after the subject, and nick [...]
I shows fine on jenny. Let's see how Yarn renders mine above.
@fastidious I see it, but can you see my reply? Let's find out!
@movq Updated. Will it be possible for the subject be moved at the begining instead (like Yarn and tt do)?
@prologic Awesome! Hope he will reply as fast as he did with me. And yes about the noise and length. Not an issue on jenny, or my own pod (I have it set to 2048, I think), but yes, ephemeral is right.
@prologic BEGIN SALTPACK ENCRYPTED MESSAGE. kiNJamlTJ29ZvW4 RHAOg9hm6h0OwKt iMGN9pY3oc5peJE UcRA8ysyQ7e8co9 shMfScCFgmQgU5Q 6w6XD2FT6szO1i1 N8qWqFRwJcHliqp hlaSvsTNhuwe1Fs KESywjL8ZvxNeyb ro0RVcRIip4Itpv NKvFZ822RoDR6pb hVvSqgubr3IanFT 6VAGQe2mYvErE7i G0O284HNvj0tcbC qzY0uB3ZFePu2fp l8nHOeEm9QLkH4Y PNKY2bXjqtblDGq 7pNiNHXtNJDjrpG nUoEXK9CaB6DGe7 oaF1P9sTz7fFrUo qwIgzw4Z1yqULQW 6dcFgsGwQEMc6bV mXuJHkrDWbfw35o 2Lpevp4PAVw884t 5Jf4cDLAe3QfRjG 4y6uwJg8BwIr2Lb 2pCX23ffwJ0yjGs Ptyzuaq2Alfl3QX AcMNGFzTNHjHfqY cvsoTrSMbyE3ssS A0k0zeRJQLoGOK4 DGkdltMXaQyXq9d zzbueCXCsIM1vYG vcy85vKuqM0ikoG caUNUuIVCc6FMs5 2JtadCtbVKyG8Wx Z4R672Fd71eDjCc lEtCdJlEAmEJePw ThkxVJutJt2R2Ce lKp9tEKmrx1jMWW V8hJNTaQGAfFDEB Unh8YasaV24NqAi GKSnstFWk3DYCxC lvws9js2jJ9OKeq 2mMgFmzEmCr99RW 2CrxZStPpB1iEDU d0Un7W7bnyo2KpV xqe8rCeHA6CUwVs 0XMmxPvU1Q0wp9A 0Jwxo5CY9QF5EJl yVwaXiVP2CKw2aH tqEE5yTp9OmpNF0 jFqgr8vHOjosPyL c3nke0S9QFjAxjt Dr6xwYpnASDr1l1 N96G3FB5iVYLFaz FkXGm7oQNTaDY8e OtHXQiXRhQY3PCi VIYYVhc9RExVnfX fvzgfgc5uSxUynD sPp4eq2rJXkX5. END SALTPACK ENCRYPTED MESSAGE.
Let's see how resilient this is, or if it breaks.
Nope, that's broken. Trying again:
BEGIN SALTPACK SIGNED MESSAGE. kXR7VktZdyH7rvq v5weRa0zkBUqOhj jswhPYkyZTEUu5X o7Okqh4fYjSmiKh Jadku1SjBPAheqm o0RDUnaewjKUqE9 I3ZAB3Hyzfo1oea X7NqyjDTqSV4a4c RJhc3Zd2V40AXTK w7GsM8nn1eMviW9 CySVLa7QfT41v6l 78u7bxB2ETWLklN K0tbB4PApao5URL 8gNObm. END SALTPACK SIGNED MESSAGE.
@movq I would recommend a longer rotation, perhaps? The way I see it, you are proposing a monthly one. That can make metadata huge too. Maybe yearly, or every 6 months?
@fastidious Boot media created. All set an ready for this weekend. Woot!
sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/USBDrive @thecanine LOL. Now I need to convince my boss. ๐ฉ
@movq Yes, I did ask whether or not it was possible to move twts to an "archive" folder, but it will be the same at @stackeffect experienced (which I have, too), that is, twts will "come back".
There is no clear solution, I am afraid, right? It is the nature of the beast.
@fastidious Some signs from here: $ (one), $$ (two), $$$ (three).
@fastidious The signs show fine on jenny. So, it is a display thing. Probably related to Markdown.
@prologic Keep in mind that there are plenty of icons already there, it is a quite busy "neighborhood".
@prologic Validating the mention will be consuming, no? I mean, right now it takes a bit when clicking on the nick of an external user. Also, discovery occurs mostly by mentioning, yes? It seems a hard problem to solve.
@darch It will only use the nick of the person to whom you are replying, no the occasional never ending chain link of nicks. ๐
@prologic
Kind of a pickle. I would say, if the user isn't following the feed, then @something and @something@example.com doesn't get linked.
We should be able to remove those subject hashtags, theyโre just noise.
Yes! I would say they are not even needed on the web UI. You click conversations, and that's done by Yarn. No need for humans to see it.
@movq
Aha! Cool! Not just deleting, but proceeding as if the twt is going to be send. If I :q! on vi it will add an empty line. If, instead, I go :x like I normally do, it works as you said---and as I wanted it. Thanks!
If
Subjectcontains the full twt, then you can skim over conversations just by reading those lines in muttโs index pager
Yes, I do the same, true.
So I decided: Okay, letโs have mutt do it.
And Mutt does it well. I agree it was/is a good idea.
The subject lines are already โcompressedโ
I noticed, yes.
I am not sure why I asked to begin with; in retrospect, in was a silly request. Perhaps the OCD in me got triggered while viewing rich headers, on a specific twt, when I saw the huge subject line that is, otherwise, always hidden.
Anyway, don't mind me, move along. ๐
@movq I find sleeping while storming the best sleep, and we have hurricanes passing by, or near by, almost every year.
@prologic It is still too early, and too few of us. Give it some time, and your wife might revise her statement. ๐
@prologic Sounds like a good plan. It is, of course, up to the Master Crafter. ๐
@prologic Jenny populates Mutt's subject with the entire twt. That makes for very, very long subject lines.
@lyse Indeed, it is a fairly common "disease". ๐คฃ
now Apache also announces content-type: text/plain; charset=utf-8
Well, that fixed things. ๐ฅณ
@lyse Bottomline, twtxt is a poor's man email system. ๐คฃ
@movq No worries, I understood you perfectly. My reply was merely a commentary, because some here---specially the youth, and I have a 20 years old son---think that the vaccine makes the 100% impervious, and thus behave pretty stupidly.
I am the one in charge of bringing food, and helping the elderly in the family, so I take super extra precautions... for their sake.
@movq I still worry, perhaps a little less. But I still take precautions. For me, and for others. I mean, you might have a bullet proof vest, but even so, would you actively seek to get shot?
@eldersnake Google or (insert your favourite search engine here) have never let me down. Also, Youtube has repair guides, and HOWTOs for just about anything, and everything.
@stigatle I really do not understand anyone not willing to get vaccinated. It is just plain stupid.
@stackeffect I am seeing this characters on your twts: )?รข\200ยจรข\200ยจ. Which client are you using?
@movq With those two (Message-ID, and In-Reply-To) the hashing could become superfluous, and no longer needed. I would vote for that!
@movq I replied to the one he originally sent (and later edited, so it was deleted). That's probably what happened.
@stigatle A twtxt client would be nice! Or a very simple cgi script to print twts to web nicely---not a second Yarn, just something to show twts in a pretty form on the web.
@adi Just like your highschool girlfriend in Afghanistan "doesn't need saving", right? I think it is a language issue you are having, as English isn't your mother tongue.
QAnon followers are cultist nuts. Some of them wanting out are finding that it is a hard thing to do (did you read the article?). Saying that "they don't need to escape" is a silly thing to say, at the very least. To me, it just doesn't make sense.
@movq Fair enough, I will modify my cron job to match. When I come across edited twts, I just delete both knowing jenny will fetch the right one next iteration. I like keeping things tidy. ๐
@mckinley I really would like to know the logic behind that reasoning.
@adi Are those the kind of things people usually talk to each other when they meet on Tinder? Asking for a friend. ๐คฃ
@prologic Entering a plain URL on feeds.twtxt.net renders a 500. Like entering ckunte.net gets 500, but http://ckunte.net doesn't. ๐ค๐ป
@eldersnake Seems like you need to make your parser smarter. Go tinker! ๐
@eldersnake RSS links are archaic. Clients discover them if properly linked, they do not need to be human visible.
Now, if there is going to be some sort of price, which for me equals to profit, then I will twt non-stop until I hit it! ๐คฃ
@prologic You are the most active of us all, so, probably you. ๐
@adi They are new MBPs, with two screen sizes, not new screen sizes ๐. 14" and 16". Both can be configured with the M1MAX, but having that SoC automatically bumps the RAM to 32GB, making them somewhat pricey.
@stigatle It is a lovely view! That's home office, or work office? I am hoping the second, though I do not know Norway's days and nights well. I know that Sweden can get pretty dark, or pretty light, for long periods of time.
@lyse Not anymore ๐ญ. I still have a self-propelled one, and electric, which is very nice. But when you live under an almost constant 32-35โ, with super high humidity, you cease liking working outside pretty quick.
@jlj Just as jlj, that is exactly what I meant. Good point, Lyse!
@lyse LOL. Some days I feel like Forrest Gump, wanting to mow just for fun. Others is a chore. The other are way more frequent than the some. LOL.
@stigatle You can get an Air for $1,000 (or $1,200 with 16GB). I have used it (with 8GB), and that machine flies. I can't imagine how fast one with an M1MAX will feel.
No new iMacs, or Mac minis. I really wanted a new iMac with the new SoC, and a bigger screen. Not this time. ๐ฉ
Got to dash now, my turn to speak at my meeting. ๐ฉ
Very thin display. I mean, really, really thin. ๐ค
They come with a notch now, but with bigger screen real estate. It really is a new design.
Companies talking about their product line, and what the are doing to take advantage of the new SoC: speed, performance, etc.
Universal apps will be made to run on iOS/iPadOS, and macOS. Create once, run on all.
Now talking about Apps, and how they can take advantage of the new SoCs.
Now talking about macOS on Apple Silicone, and how the OS takes advantage of what the M1MAX has to offer.
The GPU that comes in the SoC seems incredible, even hard to believe. Apple is doing magic here.
Other CPU and SoC makers should get even more scared now. If you have used a machine with an M1, you know it is awesome. A better M1PRO is hard to imagine, truly.
M1 is great, and it is coming to even more systems. Specifically talking about the MBP: the M1PRO. It is the next SoC on the M1 family.
Third generation of AirPods. So, new AirPods. Read more at Apple. ๐
Spatial audio will get even bigger. Talking about it, and how awesome it is---and it is!
Now talking about HomePod Mini. Not interested, sorry.
New subscription plan for Apple Music: Voice Plan. Available for many countries. Using Siri to access songs. Meh.
And here comes Tim on the field outside of the Spaceship.
Everything starts in a garage... the history of Macs, pretty much, with music.
@jlj While at it, fix this one too? You have me at netbros.com, but I am somewhere else. ๐
@movq Wow! For any country such flooding would be devastating, but Germany isn't used (doesn't see) to that kind of flooding, correct?
There is still no estimate of when this infrastructure could work again.
Oh dear... ๐
@laz I see the dilemma. It doesn't allow you to pick, and change, ports, right? Whoever built this is not thinking at scale.
@movq Meanwhile I only restart my iPhone when an iOS update is available, which normally happens every 4-5 months or so, or more. ๐
@movq Oh, OK, then not touching it. I will consider it part of history and, thus, unchangeable. ๐
@eldersnake I noticed that too, but it precedes the latest build.
@prologic There is, at least, one already๐ฎ๐ณ.
@laz How do you handle upgrades like this on your pod? Do you keep a diff of your customisations, or is it all a manual process?
It looks like BBB has many moving parts. Of all, I hate Tomcat the most. ๐ฌ
@laz Are all minimum requirements met? All pre-install checks performed? Install steps carefully read, and checked, one more time?
@stigatle You are making me want to visit Norway! I would have gone long ago if it weren't because of my partner, she can't handle the cold. Maybe I just need to leave her behind! ๐คฃ
What would the best time to visit be?
@jlj Your avatar is healthy on your pod now. Still doesn't show well on twtxt.net, but it is just a matter of time now (caching, etc.), it is all good. ๐
@movq Do I need to do a search and replace on my feed to fix old entries? Thanks for quick fix!
Timeline Sandbox