# Learn more about twtxt at: https://github.com/buckket/twtxt # # nick = lyse # url = https://lyse.isobeef.org/twtxt.txt # avatar = https://lyse.isobeef.org/avatar.jpg # lang = en, de # 2020-12-30T13:14:00+01:00 Two of my six contributions to twtxt.net broke something. What a success! [The first one intentionally](https://github.com/jointwt/twtxt/pull/288) – twt hashes now use RFC 3339 formatted timestamps. This caused old conversations to be broken. And yesterday by accident the second one. [Luckily just a layout thing](https://github.com/jointwt/twtxt/pull/321#issuecomment-752348483), but [a fix is already underway](https://github.com/jointwt/twtxt/pull/322). 2020-12-30T19:45:00+01:00 @ (#) Yeah, I know. I'm still trying to come up with something nice and easily recognizable. I just placed a JPEG next to it, but something this small doesn't work terribly well. I'll keep experimenting. 2020-12-30T19:46:00+01:00 @ (#) My pleasure! Thanks for all your efforts on improving twtxt as a whole. 2020-12-31T12:45:00+01:00 @ (#) Hahaahaaa, brilliant, you're right, it's the A-Team lawnmower. :-D I took the photo yesterday in front of a new background – [here in much higher resolution](https://lyse.isobeef.org/avatar-3000.jpg). Unfortunately, I don't have enough dark gray bricks to better imitate the original coloring. There are also plenty of pictures from a couple of years ago: https://lyse.isobeef.org/lego/a-team-van/v1.5/ I definitely should weed out all the duplicates someday… 2021-01-01T12:30:00+01:00 @ (#<4uhyaha https://twtxt.net/conv/4uhyaha>) Just request the last seen twt as well in the `Range` header and if it doesn't match the old one you've already seen, you know that this feed doesn't operate in append only mode, so that you can request the whole feed. It's worth mentioning that this also happens if the key value comments at the beginning of the file have changed, too, e.g. when the maintained subscription list has been modified. Yes, not ideal. Healthy 2021 everybody! 2021-01-03T09:20:00+01:00 @ @ (#<7mcr2ea https://twtxt.net/conv/7mcr2ea>) Hey, same to you! Which of your feeds is the real deal? The one on twtxt.net or tilde.club? It also seems that your User-Agent HTTP header from tidle.club is broken, there's a superfluous "public_html/" in the path. ;-) 2021-01-03T23:45:00+01:00 @ @ @ (#) I'm currently in the process to come up with something automated, too. At the moment I manually check my Nginx access log with `cut -d ' ' -f 12- ~/www/logs/twtxt.log|sort|uniq -c` It works for now, but it's certainly not good enough. I definitely want to filter out search engine and other unusable UAs, fold software versions (twtxt.net with its git hashes comes to mind ;-)) and also check the result against my subscribed feeds, to quickly discover new subscribers. 2021-01-04T00:30:00+01:00 I just noticed a bug in my twtxt client's twt publish form – luckily just before submitting. Why on earth make it most programming languages so easy to misuse their damn date time APIs!? On today's episode we have Python's `datetime.datetime.utcnow().replace(second=0, microsecond=0).astimezone().isoformat()` which is not what we want, it's actually `datetime.datetime.now(datetime.timezone.utc).replace(second=0, microsecond=0).astimezone().isoformat()` instead. The former gives us the time in UTC and thus is off by an hour in my case: `2021-01-03T23:30:00+01:00` vs. what I'm really after: `2021-01-04T00:30:00+01:00` 2021-01-04T00:45:00+01:00 @ (#) Exactly, that's what I probably end up doing. But first I have to write up the spec on this extension, I reckon. :-D Yesterday I came across that issue and pull request, both you and @ had discussed back then. 2021-01-04T01:00:00+01:00 @ (#) I'm sure I will find some time tomorrow or in the next days. 2021-01-04T01:05:00+01:00 @ (#) Absolutely correct, this format is actually both ISO 8601 as well as RFC 3339, where ISO 8601 is a superset of RFC 3339, making dashes and colons optional among other things. [`datetime.isoformat()`](https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat) produces the ISO 8601 formatted timestamp, which happens to be RFC 3339-compliant, too. 2021-01-04T01:30:00+01:00 @ (#) I'm using [my own terrible mess over here](https://git.isobeef.org/lyse/tt/), there's also a small screenshot (not sure whether you can make out anything). It actually started out as something completely different. I just wanted to fool around with [Urwid](http://urwid.org/), a Python text user interface library. But you know how things end up. ;-) At the moment I rely on the official twtxt CLI for fetching, caching and following, but some day I'm gonna integrate it into `tt` for sure. Hopefully sooner rather than later. This client is currently in a really horrible state and not very usable by others (hardcoded paths and crap like this). Finally going to bed now, see you in a couple of hours, g'night! 2021-01-04T09:45:00+01:00 @ (#) No offence, to me it seems this client is abandoned, there are three PRs untouched for months or even years, which fix actual crashes of the client. When I discovered the crashes on my own and fixed them, I wanted to send a PR, but then realized that they had all been already addressed by some folks, but nothing happend. So I then didn't bother any further. 2021-01-04T09:50:00+01:00 @ (#) On a side note, is it just an operator error or is there actually a bug in one of your clients? You [replied](https://twtxt.net/twt/fzlkx2q) to the broken URL `https://lyse.isobeef.orgd/user/lyse/twtxt.txt`, which looks like a twtxt.net instance, but there's also a "d" appended to the top level domain. I've seen the exact same pattern happening three days ago with @ in [this twt](https://twtxt.net/twt/fvm4a3a): `https://www.uninformativ.ded/user/vain/twtxt.txt` 2021-01-04T10:00:00+01:00 @ (#<6hjn4ia https://twtxt.net/conv/6hjn4ia>) Thanks mate! No doubt about the one and only true original, but I certainly praise you for its resurrection. :-) Most old feeds I found were dead by then, a lof of the maintained ones are on your service. 2021-01-04T10:05:00+01:00 (#) Shame on me, but I'm using Google as my search engine. I also watch quite a lot of YouTube. So I guess this makes this a "no". All the other things could die tomorrow and I wouldn't care the tiniest bit at all. 2021-01-04T12:45:00+01:00 @ (#) Alright, I'm gonna use DDG from now on. Let's see how this goes. However, I really don't want to miss out on the 90 YT channels I'm "subscribed" to (I don't have an account, I just monitor them with my own tooling). 2021-01-04T12:50:00+01:00 @ (#) I guess the experiment is about changing habits. — Now, I'm off to the woodworking shop and doing some realworld stuff. 2021-01-05T22:45:00+01:00 @ @ (#) The "+00:00 to Z" thing comes from Go's internal time handling. `time.RFC3339` will always produce `Z` rather than `+00:00`. I doubt that it is possible to keep the original information in the `time.Time` object itself, whether `+00:00` or `Z` was parsed from the _twtxt.txt_, so I took the lazy route of just defining Go's behavior in the [spec](https://dev.twtxt.net/doc/twthashextension.html). That's also why UTC must be used, if the original date does not specify a timezone at all. For a quick and easy hash calculation it would be ideal to hash the exact twt line without the twter URL, but that would have been a tiny bit bigger change I didn't have the courage to suggest. 2021-01-06T10:45:00+01:00 @ @ (#) The definition of a twt hash is probably going to be fun with that approach. Btw, @prologic, same ["d" TLD "bug"](https://twtxt.net/twt/eunq7ca) in https://twtxt.net/twt/kuj4oea. 2021-01-06T14:00:00+01:00 @ (#) Nice! Okay, that's where the "d" comes from, but I don't get where the twtxt.net like URL was produced. Must be hidden somewhere in the call chain. 2021-01-06T14:15:00+01:00 Here's the [proposed specification regarding the `User-Agent` HTTP request headers for multi user clients](https://github.com/jointwt/twtxt/pull/326). Please take a look and leave some comments. I'm pretty sure it can be improved with some further input. Thanks and [kingly snow regards](https://lyse.isobeef.org/snow-2020-01-06.jpg). 2021-01-06T17:45:00+01:00 @ @ (#) Nice "Good morning!" example, I didn't think of that! I always thought that there's a pretty much zero chance of two users creating the same twt at the same second. But your sample is actually quite likely to happen, especially if the twtxt universe grows. So, yeah, there are indeed candidates for potential hash collissions without the author information. 2021-01-06T17:50:00+01:00 @ (#) Ah, thanks for the clarification! 2021-01-06T17:55:00+01:00 @ (#) Thank you! We don't need to rush this. It's better to take our time and produce a good spec rather than fix it several times after publication. 2021-01-06T18:00:00+01:00 @ (#) I don't get this dark mode thingy everywhere. The only black things are my terminal and [background image](https://www.jpl.nasa.gov/spaceimages/images/largesize/PIA20038_hires.jpg). ;-) 2021-01-07T16:45:00+01:00 @ (#) If it is getting too bright, I turn on the light in the room to create fairly equal illumination around my monitors. 2021-01-07T18:30:00+01:00 @ (#) It just works perfectly, no need for fun. :-P Maybe my issue is that it takes way too long to get used to a completely different appearance and my brain just thinks: REVERT! 2021-01-07T18:45:00+01:00 @ (#) There's this really crude workaround: https://manual.audacityteam.org/man/vertical_zooming.html#advanced If you zoom in on the left scale with a left click drag, you get horizontal lines. Pressing Esc aborts the zoom and hides the zoom guide lines. 2021-01-09T00:30:00+01:00 While stalking @ I came across the Fibonnaci Project and dug out my heavily rusted Ada knowledge back from the days. I couldn't believe it [wasn't listed, yet](https://github.com/Random-People/Fibonacci/pull/17). I certainly need to do something with that language again. Thanks mate! :-) 2021-01-09T00:35:00+01:00 @ @ (#) Sweet! But yeah, I remember seeing tons of leaves and branches torn off when walking on the down under footpaths and thinking "WTF have they done here again!?" Regarding nature: earlier I've seen ~200 sheep beeing driven down a hill to a new snowy paddock. That was quite cute to watch. 2021-01-09T15:20:00+01:00 @ (#) Happy filing! :-) 2021-01-10T10:00:00+01:00 @ (#) This looks great, nice work! I really enjoy following your build progress. 2021-01-10T10:10:00+01:00 @ (#) Skill comes with practice. Mission accomplished? 2021-01-10T14:55:00+01:00 @ @ (#) Horizontal surfaces attract all sorts of crap, I wish my desk was an exception. Thus I just hint the missing meter on the left. https://lyse.isobeef.org/desk.jpg I'm using i3, so nothing really special here: https://lyse.isobeef.org/screenshot.png 2021-01-10T15:00:00+01:00 @ (#) Cool. I believe for experiments it's a totally valid approach to go with cheap stuff. No need to spend tons of money. 2021-01-11T17:40:00+01:00 @ @ (#<52smrra https://twtxt.net/conv/52smrra>) My [tt](https://git.isobeef.org/lyse/tt) client uses the conversation URLs in the twt subjects when creating a reply, because I think this makes more sense, too. This is also covered by the [Twt Subject Extension Spec](https://dev.twtxt.net/doc/twtsubjectextension.html#machine-parsable-conversation-grouping). This client is still in a terrible state right now – hence "tt" as in "terrible tui" rather than "twtxt tui". :-P 2021-01-11T17:45:00+01:00 @ (#<37xr3ra https://twtxt.net/conv/37xr3ra>) Cool! 2021-01-11T17:50:00+01:00 @ @ (#) Have a good night! https://lyse.isobeef.org/sonnenuntergang-2021-01-11/ # 2021-01-12T16:15:00+01:00 @ (#) Thanks, but in reality it was of course much nicer. 2021-01-12T16:20:00+01:00 @ @ @ (#) Wow! Did you account for duplicates such as the twtxt.net URL change? 2021-01-12T16:45:00+01:00 @ (#) I'm pretty sure you – as someone with a lot of gardening experience – will also find a solution to cover up the looks. :-) 2021-01-13T16:20:00+01:00 @ @ @ (#) Thanks, great analyses! Ha, I have 42 twts! Well, now not anymore. Using the target URL of a redirect and not the original one should get rid of at least some of the duplicates. I would have expected some of the EMPTY flagged ones as FAILED instead, esp. all the ones with the invalid TLDs (see mine for example). But I need to have a deeper look at the code. Cool project nevertheless! 2021-01-13T22:15:00+01:00 @ (#) I reckon you should make the pp docs more prominent on the front page. I'll take a deeper look into it tomorrow. 2021-01-15T18:00:00+01:00 @ (#) Yes, good idea! A little bit more complex example would certainly also help. It took me quite long to wrap my head around on how to use this properly (maybe I was just too tired). What does the "upp" in "upp{html,xml,css,…}" stand for? "pp" references the preprocessor, but the "u"? At the moment I don't have a usecase for mkws, but I'll keep it in mind. Btw, the "man" directory in the [File Hierarchy section](https://mkws.sh/docs.html#filehierarchy) misses the "`" in the tree. 2021-01-15T20:45:00+01:00 @ (#) In my case I had trouble to get the overall idea on how to work with several files. My initial expection simply wasn't met. However, your HOWTO is the missing link, thanks mate! You definitely have to link this somewhere prominent. Maybe also publishing the raw mkws website sources (or a subset of it, probably without the tarballs) would also helpful to get one or two tricks. Ah, unprocessed, makes sense. 2021-01-15T22:30:00+01:00 @ (#<7tl43vq https://twtxt.net/conv/7tl43vq>) Looks like you haven't sacrificed enough cats, have you? 2021 is the year when Linux finally prevails the desktops! 2021-01-16T11:00:00+01:00 @ @ (#<7tl43vq https://twtxt.net/conv/7tl43vq>) Hahaha! :-D 2021-01-17T08:45:00+01:00 @ (#) Oh yeah, we got five centimeters over night. 2021-01-17T08:50:00+01:00 @ @ (#) You always meet twice, have a good one. 2021-01-17T10:45:00+01:00 @ @ (#) This looks awesome! There's no kill like overkill, door and window will certainly last a bit. 2021-01-17T17:15:00+01:00 @ @ (#) When walking through the forest I saw lots of kids and families having great fun riding their sledges down the hills. This wasn't really possible here for several years now. Visibility was poor, but I got some shaky video footage from birds in the snow. https://lyse.isobeef.org/schnee-im-wald-2021-01-17/ 2021-01-17T20:30:00+01:00 @ @ (#<75myq4q https://twtxt.net/conv/75myq4q>) Neither have I. I haven't come across real otters other than in the zoo. https://www.youtube.com/watch?v=SIWbjgPYcJY 2021-01-17T20:35:00+01:00 @ (#) How much did you get? Here it will be gone on Wednesday, temperatures are supposed to rise from tomorrow on. 2021-01-17T21:15:00+01:00 @ (#) Yes, cities make a difference. Some photos were taken around 450-500m NHN, much higher than where you are. @ Still nice, though. 2021-01-17T21:20:00+01:00 @ (#) Ah, multi-purpose power shed so to speak. 2021-01-19T16:15:00+01:00 @ (#<2ezy3dq https://twtxt.net/conv/2ezy3dq>) I'm no material expert, but this looks fine. If you cap off the square tubes, you'll probably stop the oxidation starting from inside. I wouldn't want to paint the inside. 2021-01-19T16:20:00+01:00 @ (#) Hui, interesting! 2021-01-19T16:25:00+01:00 @ (#) No doubt about that, but sadly this is not one of them. One record summer follows the next. Decades ago, winter used to be much cooler, too. 2021-01-19T16:45:00+01:00 @ (#<7efdyuq https://twtxt.net/conv/7efdyuq>) Great story! :-D 2021-01-20T18:35:00+01:00 @ (#) Oh, this is wonderful! I just started reading it. 2021-01-20T18:40:00+01:00 @ @ @ (#) Holy crap! But luckily you quickly noticed it. 2021-01-20T18:45:00+01:00 @ (#) Cool solution! The one time I had to implement such custom ordering I went with holey integers and recompute, because items were rearragned only very rarely. 2021-01-20T19:00:00+01:00 @ (#<2ezy3dq https://twtxt.net/conv/2ezy3dq>) Fair enough. I just thought, that QLD would be quite humid and therefore provide perfect conditions for oxidation. I often heard, that once the thing is sealed up and the corrosive stuff inside used up, it won't rust any further. But it needs to be sealed, if there are leaks, oxidation continues. 2021-01-20T21:45:00+01:00 What the fuck, it took systemd up to [release 240](https://github.com/systemd/systemd/blob/master/NEWS#L2884) to implement `append:/my/stdout.log` for `StandardOutput` and `-Error`! Of course this Ubuntu box runs version 237… I was joking to my mates that they added `file:path` in version 236, not knowing that this evil insinuation is [actually true](https://github.com/systemd/systemd/blob/master/NEWS#L4112)! O_o Who needs files anyways? There's this Über-Pötterlog. Holy mother! Back to good old `/bin/sh -c '… >> /my/stdout.log'`. 2021-01-20T21:50:00+01:00 @ @ (#) Yeah, documenting them would be great. Maybe we don't even need a separate meta data file and can handle everything using special comments. 2021-01-21T18:20:00+01:00 @ @ @ @ (#) The "Z" is even required over "+00:00" according to our [Twt Hash Extension Specification](https://dev.twtxt.net/doc/twthashextension.html). The [ABNF for RFC 3339](https://tools.ietf.org/html/rfc3339#section-5.6) states, that "T" has to be used. But the second note below can be interpreted such that RFC 3339 also permits a space. Up until now I always read this as they refer to ISO 8601 with the space rather than RFC 3339. 2021-01-21T18:25:00+01:00 @ @ @ @ (#) Well, "Z" vs. "+00:00" only matters for the twt hash, not the timestamp of the twt. 2021-01-22T19:35:00+01:00 @ (#) Yeah, over the time it feels like there's less time to do useful stuff. It's even worse since I started twtxting. :-D 2021-01-22T19:40:00+01:00 @ (#<75myq4q https://twtxt.net/conv/75myq4q>) Any success with the coding otter yet? ;-) 2021-01-22T19:45:00+01:00 @ (#) Nice pictures! 2021-01-22T19:50:00+01:00 @ (#<3qhn7la https://twtxt.net/conv/3qhn7la>) Absolutely! When reading through the back log prior to this invention, it was horrible. 2021-01-23T12:00:00+01:00 @ (#<3oomzpq https://twtxt.net/conv/3oomzpq>) What window manager are you using and what did your daughter teach you? :-) 2021-01-23T12:05:00+01:00 @ @ (#) Up until now I didn't know that this is even an English adjective. What future nick are you thinking about? 2021-01-23T16:15:00+01:00 @ (#) I thought, that [vain](https://dictionary.cambridge.org/us/dictionary/english/vain) was a made up nickname and not a real word. 2021-01-23T16:30:00+01:00 @ @ (#) Sure, you don't need to have one, but does it really hurt you? Even for small stuff it's an easy way have distributed backups. I also wouldn't want to miss the quick and easy diffability, which comes in very handy if I accidentally hit the wrong keys in vim without immediately noticing. The particular hosting is debatable, no question, but I certainly wouldn't want to loose the version control aspect in general. 2021-01-23T17:00:00+01:00 @ (#) I don't think this is possible right now. In fact this doesn't work for any external feeds and is not just limited to other twtd instances. That's what I experienced as an anonymous twtxt.net visitor. But I use twtd hardly at all, just to fool around locally, so take this with a grain of salt. 2021-01-23T17:05:00+01:00 @ (#) Well, English is not my mother tongue, I just made "diffability" up as it sounded good and seemed likely to exist. Though, turns out, its meaning is a bit different. What I meant to say is the "possibility to create a diff". Glad that be both learned something new today. :-D 2021-01-23T19:35:00+01:00 @ (#) Nope, because I use my own client. It looks like this: https://lyse.isobeef.org/thewismit.png 2021-01-23T23:00:00+01:00 Since I lately see technically invalid [twt subject hash tags for machine-parsable conversation grouping](https://dev.twtxt.net/doc/twtsubjectextension.html#machine-parsable-conversation-grouping) every now and then, I just taught the twtxt parser of my client to recover these `(#1234567)` subjects. Now they are grouped back into the proper conversations and do not form new root/single twts. Note, that the offending clients did not expand the [hash tag](https://dev.twtxt.net/doc/hashtagextension.html) in the subject to a proper `(#)` form prior to publishing the twts. (Let's see whether my first markdown code will be expanded by twtd to a linked hash tag or not.) 2021-01-23T23:15:00+01:00 (#) Well, sadly the code blocks are messed up by the hash tag expansion… And my own client has also a rendering issue: https://lyse.isobeef.org/tt-broken-code-rendering.png Above tt, my client, down below the raw twt in vim. 2021-01-23T23:20:00+01:00 @ @ (#) For a start we could teach twtd to show all its cached external feeds, too, not just the internal ones. 2021-01-23T23:25:00+01:00 @ @ @ @ (#) Hahaha, great find! :'-D 2021-01-23T23:30:00+01:00 @ (#) It's about time! Welcome back mylord. 2021-01-24T09:15:00+01:00 @ @ @ @ (#) Yes, so do I. I don't feel any overhead, even for the most basic stuff. But I also have a single repository for all my super tiny stuff of various sorts. 2021-01-24T09:30:00+01:00 @ @ (#) Cool, lextwt to the rescue! With retwt it looks like this: https://lyse.isobeef.org/retwt-broken-code-rendering.png My own twtxt parser handles subjects too freely and treats the first parentheses – no matter where in the twt the appear – as subjects which happens to be my example subject hash tag in markdown inline code. Since I hide the subject to save space, the code block is empty. 2021-01-24T17:20:00+01:00 @ (#) Ah nice reference! I was already wondering when I saw jenny appearing in my access log. :-) 2021-01-25T16:45:00+01:00 @ (#) Green looking good, mate. Doing something the first time always takes much longer than anticipated and you also encounter plenty of surprises. Even the second time you learn something new. At least that's my experience. 2021-01-25T17:45:00+01:00 @ (#) Your redirect on twtxt.net is missing the `/twtxt.txt`. :-) Don't you want to add TLS support, now that you're moving? Since people move around lately, I need to add a "mark all twts read" option to my client, because all the hashes are now different and show up again as unread. 2021-01-25T18:40:00+01:00 @ (#) Excellent! ;-) Yep, just let Nginx terminate the HTTPS session and pass everything over HTTP to twtd. 2021-01-25T18:45:00+01:00 @ @ (#) Hahaha, absolut klasse! :-D 2021-01-25T18:50:00+01:00 @ (#) I first thought my client had a bug. 2021-01-25T21:15:00+01:00 @ (#) Cool! I like the twt hash test suite. ;-) You could extend the feed fetch with `ETag` or `If-Modified-Since` headers. 2021-01-25T21:20:00+01:00 @ (#<6ouob5a https://twtxt.net/conv/6ouob5a>) I suspect this is not enough to move that amount of air. But I don't have any data nor have I even tried this. Just some gut feeling. 2021-01-25T21:30:00+01:00 On the way to the woods I came across a kestrel (?) today. Moving twigs in the wind and full zoom don't make for the highest quality photos. Everything had melted days ago, but we got snow overnight again, some forest glades were covered in 15-20 cm snow. https://lyse.isobeef.org/schnee-im-wald-2021-01-25/ 2021-01-26T18:00:00+01:00 @ @ (#) A penny saved is a penny earned. 2021-01-26T20:55:00+01:00 @ (#<3qoy3xa https://twtxt.net/conv/3qoy3xa>) Oh yeah, this is bloody awesome! \o/ Need to remember this channel. 2021-01-26T21:00:00+01:00 @ (#<6ouob5a https://twtxt.net/conv/6ouob5a>) Indeed, that doesn't sound too bad at all.