(#rudviwq)
#xuiudxa
(#rudviwq)
(#xsrxvgq) @movq@www.uninformativ.de “Thermometer must not be installed near aircraft turbine exhaust.”
(#h75wtqq) @xuu@txt.sour.is My layout looks like this:
Storage
interfaceStorage
interfacenewRAMStorage(testing.T, $initialData) *Storage
Storage
newRAMStorage(…)
functionI then tried to relocate the newRAMStorage(…)
into a
NewRAMStorage(…)
so that I could just reuse it from both
testutils.NewRAMStorage(…)
testutils.NewRamStorage(…)
But that results into an import cycle, because the teststorage
package imports storage
for storage.Storage
and the storage
package imports testutils
for testutils.NewRAMStorage(…)
in its test. I’m just screwed. For now, I duplicated it as newRAMStorage(…)
in controller/feeds_test.go.
I could put NewRAMStorage(…)
in storage/testutils.go, which could be guarded with //go:build testutils
. With go test -tags testutils …
, in storage/sqlite_test.go could just use NewRAMStorage(…)
directly and similarly in controller/feeds_test.go I could call storage.NewRamStorage(…)
. But I don’t know if I would consider this really elegant.
The more I think about it, the more appealing it sounds. Because I could then also use other test-related stuff across packages without introducing other dedicated test packages. Build some assertions, converters, types etc. directly into the same package, maybe even make them methods of types.
If I went that route, I might do the opposite with the build tag and make it something like !prod
instead of testing. Only when building the final binary, I would have to specify the tag to exclude all the non-prod stuff. Hmmm.
(#rudviwq)
(#rudviwq)
(#h75wtqq) maybe even an internal that has the shared test stuff
(#h75wtqq) oof that sucks man. does it make sense to have a separate testutils package to import from?
(#rudviwq)
(#i3ytz3q) it seems to be confused with the subject right next to it.. it works better at the end of the twt string.
Yarn won’t display anything. but the parser does add it to the AST in a way that you can parse it out using twt.Attrs().Get("lang")
https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/ast.go#L1270-L1272
https://git.mills.io/yarnsocial/go-types/src/branch/main/twt.go#L473-L478
Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don’t like any of the alternatives. :-(
(#myrrq6q) Thank you, @eapl.me@eapl.me, this is awesome! I’m curious to see if we find some more advantages with the current approach. It seems there should be some more, but I can only think disadvantages right now. :-)
(#myrrq6q) @eapl.me@eapl.me Great, thanks for organizing this! 👍
(#xsrxvgq) @lyse@lyse.isobeef.org No, it’s always in the shadow. But there’s not a lot of wind, maybe other things around it heat up … 🤔
(#rudviwq) @prologic@twtxt.net Best wishes!
(#xsrxvgq) @movq@www.uninformativ.de Did you place it in the sun? We only got 15°C today.
I have released new updates to the twtxt.el client.
In the next version you will be able to see all your mentions.
Enjoy!
(#rudviwq) Oh my god! 😵
(#rudviwq) @prologic@twtxt.net Ouch, that’s heading right towards you, eh? 🙈
Boom. 24°C. No spring? I think my thermometer is wrong.
(#rudviwq) Update:
(#rudviwq) Another view!
This is what I’ll be facing into in the next few hours and over the next couple of days! Cyclone Alfred 🌀
(#jwfdkuq) TwtAttrs
https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
(#volmoea) TwtAttrs
https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
(#volmoea) @eapl.me@eapl.me@eapl.me@eapl.me I saw a few a while back.
(#jwfdkuq) For point 1 and others using the metadata tags. we have implemented them in yarnd as [lang=en][meta=data]
(#kjtw2hq) Yeah so disappointed. Brother was one of the last good ones.
(#qxt2gfa) @lyse@lyse.isobeef.org Same I think it’s not worth it either
(#qxt2gfa) @prologic@twtxt.net Damn! :-( Yeah, I won’t build that into my client. Not worth it for the many things that are still undetectable and the low frequency it happens.
(#zttnfma) @bmallred@staystrong.run Oh, I hear you! It’s always after carefully proofreading and publishing that a typo suddenly pops up. :-) Not sure if amending your edit implementation is really worth it, but happy hacking in case you do.
(#ch74qxa) @movq@www.uninformativ.de Luckily, they’re not made of steel as I would not have made it home with such heavy weights. :-D
(#kjtw2hq) @movq@www.uninformativ.de Fuck! So there aren’t any non-criminal printer vendors out there anymore. Very sad. I really don’t understand why this is not highly illegal in the entire world.
(#kjtw2hq) @xuu@txt.sour.is Awww thanks bro 😎
(#kjtw2hq) @prologic@twtxt.net Got you bro.
(#kjtw2hq) @movq@www.uninformativ.de I know right? 🤣 Fuck this geoip blocking censored shit™ 💩
(#kjtw2hq) @prologic@twtxt.net What the heck. 🫠
A depressing video about the current state of printers that just ends with “fuck this, I’m gonna talk about my cat now”: https://www.youtube.com/watch?v=bpHX_9fHNqE
(#ch74qxa) @lyse@lyse.isobeef.org Lyse, the man with feet of steel. 🦾
(#qmnnm5a) @eapl.me@eapl.me Sounds like a great idea! 👍
(#qmnnm5a) @eapl.me@eapl.me@eapl.me@eapl.me That should be fine 🤞
(#ch74qxa) And I just added a video clip of the woodpecker. As you can easily see from the shaking, it hammers so dang hard that the whole ground around the tree vibrates.
I went on a 5:30 hours long hike to my second backyard mountain. About 12km to get there and roughly 9km on the way back. It was super nice, sunny all day long, 12°C and luckily just a little bit of wind. Great scenery. I managed to capture one great spotted woodpecker hammering along. There was also a kestrel hovering over a meadow and then landing on a sports field light pole. At the castle ruin I could watch 10-12 gliding red kites (with the V-shaped tail) and other raptors, maybe bussards, I don’t know, for about five minutes. That was fascinating. Unfortunately, my camera doesn’t too well with moving targets.
86 more photos: https://lyse.isobeef.org/wanderung-auf-den-hohenrechberg-2025-03-03/
(#jwfdkuq) This seems to be capable of supporting edits as you noted. But I need to think a bit more (~2am here now) of whether this can be abused in any way… The advantage of Content-based Addressing (hashing the content) is that the hash is then immutable, meaning that we can have integrity that the hash actually represents that content from that author at that time.
(#jwfdkuq) @eapl.me@eapl.me@eapl.me@eapl.me I kind of like the idea of 96473B4F_1
– That is SHA256SUM(feed_url)_<monotomic_feed_post_id>
(#jwfdkuq) Example feed I guess? ☝️
(#jwfdkuq) “`
1 2025-03-03T15:00:00-04:00 {lang=en} Hello, world! Welcome to my twtxt feed. UTF-8 check: é, ö, ü.
2 2025-03-03T15:05:00-04:00 {lang=es} ¡Hola, mundo! This tweet is in Spanish.
3 2025-03-03T15:10:00-04:00 {url=ABCDEF12,id=1} Replying to tweet 1 using its URL hash.
4 2025-03-03T15:15:00-04:00 {edited=1} This tweet has been edited once.
5 2025-03-03T15:20:00-04:00 {lang=fr} Bonjour le monde! A French twt overriding the default language.
6 2025-03-03T15:25:00-04:00 Regular twt without metadata defaults to en.
”`
(#jwfdkuq) @eapl.me@eapl.me Some really good idea in this post of yours 👌👌
(#efimf3a) @xuu@txt.sour.is Oh 🤔
(#jwfdkuq) @andros@twtxt.andros.dev Reading… 👀