# _ _ _ _ _ _ # ____ | | | | (_) # __ ___ _ _ _ / __ \| |___ _| |_ ___ ___ _ _ _ __ _ ___ # \ \/ / | | | | | |/ / _` | __\ \/ / __| / __|/ _ \| | | | '__| / __| # > <| |_| | |_| | | (_| | |_ > <| |_ _\__ \ (_) | |_| | |_ | \__ \ # /_/\_\\__,_|\__,_|\ \__,_|\__/_/\_\\__(_)___/\___/ \__,_|_(_)|_|___/ # \____/ # # Twtxt is an open, distributed microblogging platform that # uses human-readable text files, common transport protocols, # and free software. # # Learn more about twtxt at https://github.com/buckket/twtxt # # nick = xuu # url = https://txt.sour.is/user/xuu/twtxt.txt # avatar = https://txt.sour.is/user/xuu/avatar#ymqndkvjgylnmp7iazwybwdbgjfrmsrh7ykgplh5bib7ab7puyaa # description = I am Awesome! https://key.sour.is/id/me@sour.is # # followers = # following = 77 # # link = Github https://github.com/sour-is # link = Keyoxide https://key.sour.is/id/me@sour.is # link = Salty IM im:xuu@sour.is # # follow = Oatmeal https://feeds.twtxt.net/Oatmeal/twtxt.txt # follow = abucci https://anthony.buc.ci/user/abucci/twtxt.txt # follow = adi https://twtxt.net/user/adi/twtxt.txt # follow = akoizumi https://social.kyoko-project.wer.ee/user/akoizumi/twtxt.txt # follow = alice http://twt.nfld.uk/user/alice/twtxt.txt # follow = alip https://dev.exherbo.org/~alip/twtxt.txt # follow = anth http://a.9srv.net/tw.txt # follow = antonio https://twtxt.net/user/antonio/twtxt.txt # follow = benaiah https://benaiah.me/twtxt.txt # follow = bender https://twtxt.net/user/bender/twtxt.txt # follow = birb https://twtxt.net/user/birb/twtxt.txt # follow = buckket https://buckket.org/twtxt.txt # follow = c-keen http://pestilenz.org/~ckeen/twtxt.txt # follow = carsten https://yarn.zn80.net/user/carsten/twtxt.txt # follow = darch https://twtxt.net/user/darch/twtxt.txt # follow = darch2 https://yarn.algorave.dk/user/darch2/twtxt.txt # follow = darch@neotxt.dk https://neotxt.dk/user/darch/twtxt.txt # follow = darren@twtxt.net https://twtxt.net/user/darren/twtxt.txt # follow = dave https://davebucklin.com/twtxt.txt # follow = david https://netbros.com/user/david/twtxt.txt # follow = default https://txt.sour.is/user/default/twtxt.txt # follow = dooven https://twtxt.net/user/dooven/twtxt.txt # follow = eapl.me@eapl.me https://eapl.me/twtxt.txt # follow = eaplmx https://twtxt.net/user/eaplmx/twtxt.txt # follow = eldersnake https://twtxt.net/user/eldersnake/twtxt.txt # follow = eldersnake@yarn.andrewjvpowell.com https://yarn.andrewjvpowell.com/user/eldersnake/twtxt.txt # follow = etux https://twt.u53.us/user/etux/twtxt.txt # follow = hecanjog https://hecanjog.com/twtxt.txt # follow = help https://txt.sour.is/user/help/twtxt.txt # follow = hxii https://0xff.nu/blog.txt # follow = ionores https://twtxt.net/user/ionores/twtxt.txt # follow = jack https://baty.twt.social/user/jack/twtxt.txt # follow = jason@jasonsanta.xyz https://jasonsanta.xyz/twtxt.txt # follow = jdtron gemini://tilde.team/~jdtron/twtxt.txt # follow = jlj https://twt.nfld.uk/user/jlj/twtxt.txt # follow = jos https://www.theorganization.net/twtxt.txt # follow = justamoment https://twtxt.net/user/justamoment/twtxt.txt # follow = kdx https://kdx.re/tw.txt # follow = kt84 https://twtxt.net/user/kt84/twtxt.txt # follow = lucidiot https://tilde.town/~lucidiot/twtxt.txt # follow = lyse https://lyse.isobeef.org/twtxt.txt # follow = lyxal https://twtxt.net/user/lyxal/twtxt.txt # follow = may@txt.sour.is https://txt.sour.is/user/may/twtxt.txt # follow = mckinley https://twtxt.net/user/mckinley/twtxt.txt # follow = movq https://www.uninformativ.de/twtxt.txt # follow = mutefall https://twtxt.net/user/mutefall/twtxt.txt # follow = news https://txt.sour.is/user/news/twtxt.txt # follow = nexeq https://twtxt.net/user/nexeq/twtxt.txt # follow = niplav https://niplav.github.io/twtxt.txt # follow = novaburst https://twt.nfld.uk/user/novaburst/twtxt.txt # follow = oevl https://twtxt.net/user/oevl/twtxt.txt # follow = pbatch https://pbat.ch/twtxt.txt # follow = prologic https://twtxt.net/user/prologic/twtxt.txt # follow = quark@ferengi.one https://ferengi.one/twtxt.txt # follow = readfog https://twtxt.net/user/readfog/twtxt.txt # follow = retrocrash https://twtxt.net/user/retrocrash/twtxt.txt # follow = retronav https://twtxt.net/user/retronav/twtxt.txt # follow = screem https://yarn.yarnpods.com/user/screem/twtxt.txt # follow = shreyan@twtxt.net https://twtxt.net/user/shreyan/twtxt.txt # follow = sorenpeter@darch.dk http://darch.dk/twtxt.txt # follow = stats https://txt.sour.is/user/stats/twtxt.txt # follow = stigatle@yarn.stigatle.no https://yarn.stigatle.no/user/stigatle/twtxt.txt # follow = support https://txt.sour.is/user/support/twtxt.txt # follow = taigrr https://ndl.taigrr.com/user/taigrr/twtxt.txt # follow = tel https://we.loveprivacy.club/user/tel/twtxt.txt # follow = thecanine https://twtxt.net/user/thecanine/twtxt.txt # follow = thewismit https://twtxt.psynergy.io/user/thewismit/twtxt.txt # follow = tiktok https://a.sour.is/tiktok/America/Denver.txt # follow = tkanos https://twtxt.net/user/tkanos/twtxt.txt # follow = twtxt https://txt.sour.is/user/twtxt/twtxt.txt # follow = ullarah https://txt.quisquiliae.com/user/ullarah/twtxt.txt # follow = usr https://twtxt.net/user/usr/twtxt.txt # follow = vito https://twtxt.net/user/vito/twtxt.txt # follow = will https://twtxt.net/user/will/twtxt.txt # follow = xandkar https://xandkar.net/twtxt.txt # follow = xuu https://txt.sour.is/user/xuu/twtxt.txt # follow = ~duriny https://envs.net/~duriny/twtxt.txt 2020-11-30T19:28:15Z hello twt! 2020-12-01T03:46:07Z @ (#) this is a very curious project. I would love to see how it manages to do its federation between pods. 2020-12-01T04:17:01Z @ can i notify myself? 2020-12-02T01:03:35Z (#<4rk4dna https://txt.sour.is/search?tag=4rk4dna>) @ Oh snap. that's what i get for copy paste! ill just have to repost and update my key. 2020-12-02T01:04:00Z This is an OpenPGP proof that connects my OpenPGP key to this Twtxt account. See https://key.sour.is/id/me@sour.is for more.

[Verifying my OpenPGP key: openpgp4fpr:20AE2F310A74EA7CEC3AE69F8B3B0604F164E04F] 2020-12-02T02:03:05Z @ (#) this is a go version of Keyoxide.org that runs all server side. which is based on work from https://metacode.biz/openpgp/

OpenPGP has a part of the self signature reserved for notatinal data. which is basically a bunch of key/values. 

this site tries to emulate the identity proofs of keybase but in a more decentralized/federation way. 

my next steps are to have this project host WKD keys which is kinda like a self hosting of your pgp key that are also discoverable with http requests. 

then to add a new notation for following other keys. where you can do a kind of web of trust. 2020-12-02T02:39:12Z (#) @ it is some interesting work to decentralize all the things.. tricky part is finding tooling. i am using a self hacked version of the go openpgp library. A tool to add and remove notations would need to be local since it needs your private key. 2020-12-02T02:39:33Z (#) @ @ The gpg command line leaves much to be desired... 2020-12-02T02:42:13Z (#) @ @ something that would be interesting would be [libravatar](https://www.libravatar.org/) for the user image. i made one that does the same for a profile cover image. 2020-12-02T03:11:41Z (#) @ huh.. true.. the email is md5/sha256 before storing.. if twtxt acted as provider you would store that hash and point the SRV record to the pod. .. to act as a client it would need to store the hash and the server that hosts the image. 2020-12-02T03:16:23Z (#) @ 
> That way at least we can form some kind of cryptographic “identity” without having to involve the users that much, it just works™

i like some of the work that keys.pub is doing with ed25519 crypto keys with something like that. 2020-12-02T03:37:10Z @ (#<3delrvq https://txt.sour.is/search?tag=3delrvq>) Yep! installed it yesterday. I like the simplicity of twt. I am quite happy with how little memory the pod seems to use. Mastodon and the "lightweight" Pleroma don't work well in small VMs. 2020-12-02T03:38:33Z @ (#) do you think twt will ever add ActivityPub integration? 2020-12-02T04:38:58Z @ (#<3delrvq https://txt.sour.is/search?tag=3delrvq>) well nice chat. it's off to bed for me. 2020-12-02T15:40:19Z @ (#) Herro! 👋 2020-12-02T21:13:26Z (#) @ (#) ha yeah. COVID makes for a timey-wimey mish-mash. Worked on some WKD and fought with my XMPP client a bit. 2020-12-02T23:27:50Z @ @ (#) I have noticed that I will get some duplicate web mention notifications. some kind of dedup would be helpful. ![](https://txt.sour.is/media/gbuazVnmVePNWgWNWd3oyC) 2020-12-02T23:38:21Z @adi @ (#<2yw2goq https://txt.sour.is/search?tag=2yw2goq>) One reservation about using it with a small community would be the expectation that the discussions at some level stay within the circle as opposed to the internet at large. 2020-12-02T23:44:45Z @ (#) also :) ![](https://txt.sour.is/media/xeBSxaDK7mmHaeuWybHAzd) 2020-12-04T20:24:14Z Happy Friday. 2020-12-04T20:26:19Z Did some work on WKD handling. Can update keys with HKP posts :) Ugh need to work on docs and unit tests. Boooorrring. 2020-12-04T20:30:22Z @ (#<63dtg5a https://txt.sour.is/search?tag=63dtg5a>) Not too happy with WKD's use of CNAME over SRV for discovery of openpgpkey.. That breaks using SNI pretty quick. I suppose it was setup as a temporary workaround anyhow in the [RFC..](https://tools.ietf.org/html/draft-koch-openpgp-webkey-service-11#.1) 2020-12-04T20:31:59Z @ (#<63dtg5a https://txt.sour.is/search?tag=63dtg5a>) With SRV you can set what hostname to be used (and port/priority/etc) 2020-12-04T21:43:43Z @ (#<63dtg5a https://txt.sour.is/search?tag=63dtg5a>) Web Key Directory: a way to self host your public key. instead of using a central system like pgp.mit.net or OpenPGP.org you have your key on a server you own. 

it takes an email@address.com hashes the part before the @ and turns it into `[openpgpkey.]address.com/.well-known/openpgpkey[/address.com]/` 2020-12-04T21:44:28Z @ (#<63dtg5a https://txt.sour.is/search?tag=63dtg5a>) looking through the drafts it looks like it actually used SRV records as recently as 2018 😵 2020-12-04T21:46:47Z @ (#<63dtg5a https://txt.sour.is/search?tag=63dtg5a>) the HKP is http keyserver protocol. it's what happens when you do `gpg --send-keys`

makes a POST to the keyserver with your pubkey. 2020-12-05T05:15:12Z @ @ (#) if we edit the txt file does it update on web? 2020-12-06T17:23:53Z (#) New Blog Post [Test Blog](https://txt.sour.is/blog/xuu/2020/12/06/test-blog) by @ 📝 2020-12-06T17:30:01Z @ (#<67nxkja https://twtxt.net/search?tag=67nxkja>) Could the config be embeded into the head comment of the twtxt.txt file and parsed out? If it also had an `avatar:` field that pointed to where the avatar image is located it can be almost all self contained. 2020-12-06T17:31:47Z @ (#<67nxkja https://txt.sour.is/search?tag=67nxkja>) an added benefit of the `avatar:` would be the user could put their gravatar/libravatar image url like `https://key.sour.is/avatar/01bc6186d015218c23dec55447e502e669ca4c61c7566dfcaa1cac256108dff0` 2020-12-07T05:58:35Z @ (#) ❤️ 2020-12-10T04:56:44Z @admin @ (#) hax? 2020-12-11T05:23:39Z @ @ (#) blocking http would be a good start 2020-12-11T05:41:50Z My latest work over the last few days. a twtxt parser. so far looking promising. Faster and less memory than the regex version. 😁 2020-12-11T14:40:17Z @ @ (#) yah. the service can have a flag for allowing non-TLS for development. but by default ignores. 

are there some users that use alternative protos for twtxt? like ftp/gopher/[dnsfs](https://github.com/benjojo/dnsfs) 🤔 2020-12-11T14:50:39Z @ (#) I have some ideas to improve on twtxt. figure I can contribute some. 😁 bit more work and it will almost be a drop in replacement for [ParseFile](https://github.com/jointwt/twtxt/blob/master/internal/twt.go#) 

Kinda wish [types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go#) was an interface. it's sooo close. 2020-12-11T14:54:48Z @ (#) yeah I do. 

It seems a bit wonky that it imports from your packages in some places. I'm guessing that's some legacy bits that need updates? 2020-12-11T19:52:42Z (#) @ so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.

```go
type Twt interface {
 Twter() Twter
 Text() string
 MarkdownText() string
 Created() time.Time
 ... 
}
``` 2020-12-11T19:57:05Z @ (#) when i get the code up to a shareable level ill ping with what i have. 2020-12-11T23:22:56Z @ just an off the wall question about hashes. why not use the time+message as it was in the original twtxt.txt file? is it because it's just not store anyplace?

also how set in stone is using user+url? vs user@domain? the latter would mean the url could change without invalidating the hash. 2020-12-11T23:23:40Z @ (#) My thoughts on it being if they switched from a different way of hosting the file or multiple locations for redundancy..

I have an idea of using something like SRV records where they can define weighted url endpoints to reach. 2020-12-11T23:23:59Z @ (#) kinda like how MX records work. 2020-12-12T00:00:56Z @ (#<4to7qbq https://txt.sour.is/search?tag=4to7qbq>) I see.. so using an ec25519 key as identity? and some kind of certificate to define the location of a feed? or maybe a DHT like Kademlia? TwTorrent ;) 2020-12-12T22:00:15Z @ (#) my bad.. my next one is more fun. 2020-12-13T05:03:30Z @ (#) 👋 I can take a stab at it when I am done with the changes I am working on. 2020-12-13T19:22:44Z (#) i am guessing you are using some form of webmention to notify the target of the DM? which loads it into a store for the user to read? 2020-12-13T20:13:49Z @ (#) for encryption. we can have browser/app generate ec25519 keypair. store the private on device and add pub to list of devices for the user on pod. 2020-12-13T20:14:44Z @ (#) sender generates an AES key encrypts message. gets the device list for user and encrypts key for each device. sends the encryptedkeys+cypertext. 2020-12-13T20:15:03Z @ (#) device gets the cypertext and uses it's device key to decrypt one of the keys and then decrypts the cypertext. 2020-12-13T20:15:22Z @ (#) pod should probably track revocation of device keys and delete the encryptedkeys that are paired with revoked keys 2020-12-13T20:15:38Z @ (#) def would be a wider discussion on preventing the pod from adding its own key to a users device list. Or using device keys to authenticate instead of user/pass. 2020-12-13T22:31:10Z (#) @ 
> Can we not have clients sign their own public keys before listing them on their Pod’s account?

Yeah.. we probably could. when they setup an account they create a master key that signs any subsequent keys. or chain of signatures like keybase does. 2020-12-13T22:46:25Z (#) @ Ok.. so using NaCL boxes. yeah its just a combo of using secretbox with a generated key/nonce. and then using the pubkey box to encrypt the key/nonce for each device. 2020-12-13T23:14:25Z (#) @ I use https://key.sour.is/id/me@sour.is

> I would need an out-of-band way to verify your public key’s fingerprint though 🤣 2020-12-13T23:36:08Z @ @ (#) This? Fingerprint: 161c614f08e4ed4d1c8e5410f8c457e6878574dbab7c9ac25d474de67db1bdad 2020-12-14T00:06:04Z i have no clue how salt works :| 2020-12-14T03:11:47Z @ (#<2fbqayq https://txt.sour.is/search?tag=2fbqayq>) 
```
-----BEGIN CRYPTUTIL ENCRYPTED MESSAGE-----
l0GwFAQpx3ed+bZlcQ+pexbynFzZOm8EI/FivGbWQ16whyTkToVv8S2GSAjrsJoT
37MdaBDpoitli/f/aP130b6O6SnK/LdHHJ1DTvWgxB14sq9b4mRtk7HvYzA=
-----END CRYPTUTIL ENCRYPTED MESSAGE-----
``` 2020-12-14T03:12:11Z @ @ (#<2fbqayq https://txt.sour.is/search?tag=2fbqayq>) had to up my twt size a bit. 2020-12-15T17:38:05Z @ you think its time the version to get bumped? :) 2020-12-15T17:44:18Z (#<6xtfqja https://txt.sour.is/search?tag=6xtfqja>) There is.. but we lost the transform file to make it legible. 2020-12-15T22:47:45Z (#) more or less. :D
what are you using to ci/cd? i dont see a travisci/circleci/etc in the repo.. i can put something together to bump the patch level on master branch merges. 2020-12-16T21:33:40Z (#) @ have you tried using the macos github build environment? looks like they have a windows one too. 2020-12-16T23:16:30Z (#) @ @ oh.. you are.. maybe i don't understand the issue with building? 2020-12-17T03:55:29Z (#) @ one.. kinda sorta option would be to tailor a workflow for each of the archs.. see https://github.com/JonLundy/twtxt/runs/1568071072?check_suite_focus=true 2020-12-17T21:46:10Z @ do you have any info on how the '!' tags are supposed to work? are they just a different kind of hash tag? 2020-12-17T22:11:15Z @ (#<2iqctiq https://txt.sour.is/search?tag=2iqctiq>) 😁 that is me testing locally. does it notify you somehow when I follow? 2020-12-17T22:18:43Z @ (#<5okdtza https://txt.sour.is/search?tag=5okdtza>) I see them is why I ask. like here # they use both hashtag and bangtag? 2020-12-17T22:21:28Z @ (#<5okdtza https://txt.sour.is/search?tag=5okdtza>) https://txt.sour.is/twt/cwqmygq 2020-12-17T22:32:46Z @ (#<5okdtza https://txt.sour.is/search?tag=5okdtza>) found it!

> 2020-07-25T00:52:27.000000Z a new twtxt/weewiki feature: any word starting with '!' will translate to an internal weewiki reference in my HTML renderer. Example: here is my !wiki_index 2020-12-18T19:26:19Z So excited for Go embedded files. https://golangtutorial.dev/tips/embed-files-in-go/ 2020-12-18T20:29:43Z (#<5okdtza https://txt.sour.is/search?tag=5okdtza>) @ (#) maybe a custom linking method on a pod level? like can pass a template that gets translated. ex `https://{domain}/wiki/{nick}/{tag}` + `!somepage` -> `https://sour.is/wiki/xuu/somepage` 2020-12-19T15:05:45Z @ (#<5okdtza https://txt.sour.is/search?tag=5okdtza>) after stewing on it. I really like the idea of a wiki. throw it on the roadmap after DMs 😆 2020-12-19T15:07:35Z @ (#<623o7la https://txt.sour.is/search?tag=623o7la>) yeah it would replace rice. best part is that it's in the go build step so you don't need to do any prep work with make. 2020-12-20T04:02:17Z (#<623o7la https://txt.sour.is/search?tag=623o7la>) @ when its ready.. this is still in beta. 2020-12-21T05:44:47Z @adi @ (#) I'll give it a spin first thing in the AM 2020-12-21T05:51:56Z @deadguy @ (#) been stewing on a discovery proto for twtxt. support for defining multiple ways to host/mirror a twtxt file. while being low tech enough to still be scriptable with basic Unix commands. 2020-12-21T17:42:58Z (#) New Blog Post [Twtxt Auto Discovery](https://txt.sour.is/blog/xuu/2020/12/21/twtxt-auto-discovery) by @ 📝 2020-12-21T17:44:04Z (#<5jqioeq https://txt.sour.is/search?tag=5jqioeq>) @ (#<5jqioeq https://txt.sour.is/search?tag=5jqioeq>) Wrote up a blog post here: https://txt.sour.is/blog/xuu/2020/12/21/twtxt-auto-discovery 2020-12-21T17:53:25Z (#) @ yikes the style sheet for blogs needs help. 2020-12-22T06:09:53Z @ @ (#) for the most part a subject is just the content in the perens. Usually it's a tag. It appears near the start after any mentions. It can also contain text like `(re: subjects)` 2020-12-22T15:23:07Z @ (#) went over to watch this one in my home town last night. https://youtu.be/kUZB0_Jx3iE

# #<2020 https://txt.sour.is/search?tag=2020> 2020-12-24T22:08:25Z @ @gareppa (#) Tis fake.. that is the name of the tower in Die Hard. A movie that takes place on Christmas Eve. The actual name of the Nakatomi Plaza is the FOX Plaza. 2020-12-25T23:02:24Z @ (#) ooh I am adding that to my test suite 2020-12-27T18:41:52Z @ (#) as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go#

the lexer is nearing completion.. the tough part left is rooting out all the formatting code. 2020-12-27T22:03:50Z @ (#) kinda.. It can parse the twts into an AST.. but most of the formatting out expects a string to do regex over rather then the parsed AST. thats what i am working out next. 2020-12-27T22:04:27Z @ @ (#) using regex. which can be a rather inexact science ;) 2020-12-27T22:27:34Z @ (#) yep. it actually extracts everything at parse time. like mentions/tags/links/media. so they can be accessed and manipulated without additional parsing. it can then be output as MarkDown 2020-12-27T22:38:51Z @ (#) ah I need to add an edge case for naked urls with fragments. ![](https://i.imgur.com/tqJ8f1B.jpg) 2020-12-27T22:55:45Z @ (#) yep!some of the lexer is directly copied from monkey-lang. love that book series. 2021-01-01T20:26:29Z @ https://github.com/JonLundy/twtxt/tree/xuu/integrate-lextwt I made a stats command for the new parser that extracts a bunch of info about a twtxt file. run like: `go run ./cmd/stats https://twtxt.net/user/prologic/twtxt.txt` 2021-01-01T20:26:59Z @ @ (#<5girtlq https://txt.sour.is/search?tag=5girtlq>) Your feed was great for catching edge cases ;) 2021-01-02T06:07:33Z @ (#<3cs4rua https://txt.sour.is/search?tag=3cs4rua>) sure. I don't use signal much because I have to disclose my personal phone. Telegram? https://www.t.me/xypheri 2021-01-02T14:04:08Z @ (#<3cs4rua https://txt.sour.is/search?tag=3cs4rua>) that I do. lol. I am xuu on hackint.org and freenode 2021-01-07T18:13:15Z Yesterday was rough. Finding it hard to focus on things today. 2021-01-11T18:48:59Z (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) @ @ very curious... i worked on a very similar track. i built a spider that will trace off any `follows = ` comments and mentions from other users and came up with:
```
twters: 744
total: 52073
``` 2021-01-11T22:53:53Z (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) @ It is pretty basic, and depends on some local changes i am still working out on my branch.. 2021-01-12T00:28:27Z (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) @ yeah it reads a seed file. I'm using mine. it scans for any mention links and then scans them recursively. it reads from http/s or gopher. i don't have much of a db yet.. it just writes to disk the feed and checks modified dates.. but I will add a db that has hashs/mentions/subjects and such. 2021-01-12T00:34:12Z (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) @ the add function just scans recursivley everything.. but the idea is to just add and any new mentions then have a cron to update all known feeds 2021-01-12T05:58:53Z @ (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) sounds about right. I tend to try to build my own before pulling in libs. learn more that way. I was looking at using it as a way to build my twt mirroring idea. and testing the lex parser with a wide ranging corpus to find edge cases. (the pgp signed feeds for one) 2021-01-12T06:06:29Z @ (#<37xr3ra https://txt.sour.is/search?tag=37xr3ra>) in theory shouldn't need to let users add feeds.. if they get mentioned by a tracked feed they will get added automagically. on a pod it would just need to scan the twtxt feed to know about everyone. 2021-01-12T14:24:45Z @ (#) that seems to match my numbers. are you picking up the few gophers out there? 

kinda makes me wonder about the ~300k you have cached. y'all got the library of alexandria over there. 2021-01-12T19:20:05Z (#) @ @ @ Nope.. i have updated my gist to include the feeds listing. [feeds.txt](https://gist.github.com/JonLundy/dc19028ec81eb4ad6af74c50255e7cee) 2021-01-12T23:15:26Z @ @ (#) Closer! Last bit to finish is a beast. `FormatTwtFactory` 2021-01-16T07:19:17Z @ (#<7nq3eda https://txt.sour.is/search?tag=7nq3eda>) sometimes I think it would be nice to have a XMPP instance. then I remember it's all XML and I think "nah."

I am constantly in awe that IRC remains the only realtime chat that isn't unnecessarily complex. name another that can run chatops bot with just nc and sh? 2021-01-20T04:55:17Z (#) Emoji nicks are no problem with lextwt. 😁 2021-01-20T16:02:28Z @ (#) Veri soon. I have a experimental runflag that I am just about to deploy to my node. I have a few show stoppers holding me back. 2021-01-20T17:44:50Z @ (#) the meta info on the top I added manually. it's following what I have seen from some other twtxt feeds. the new parser will read them. 2021-01-20T17:48:52Z @ (#<7nq3eda https://txt.sour.is/search?tag=7nq3eda>) that would be an interesting idea. I think your current spec of using an SMTP proto is probably best for DM. 

but having a federation of IRC servers would be interesting for realtime twt propagation. 2021-01-21T20:20:36Z @ (#) test. Running new parser on txt.sour.is. :D 2021-01-22T00:08:17Z @ (#<6jkpxzq https://txt.sour.is/search?tag=6jkpxzq>) hmm this line seems to be tricky to parse. will need to look into it. 2021-01-22T00:36:52Z (#<6jkpxzq https://txt.sour.is/search?tag=6jkpxzq>) @ @ (#6jkpxzq) ![](https://txt.sour.is/media/vHXME6b94DWWMsQjR9tUTX) 2021-01-22T00:44:40Z (#<6jkpxzq https://txt.sour.is/search?tag=6jkpxzq>) @ @ (#<6jkpxzq https://txt.sour.is/search?tag=6jkpxzq>) hmm from what i can tell its parsing ok.. something got broken in the markdown conversion... 2021-01-22T02:51:24Z @ (#) lol.. sorry about the spam 2021-01-22T04:08:49Z @ @thewismit (#) not sure.. im using Caddy instead of nginix 2021-01-22T16:56:42Z @ (#) i think i finally suss'd out my hash issue.. now to figure out why im losing avatars on restart. 2021-01-23T05:09:04Z (#nicbdoq) @ @ (#) Ya I get that error a lot. I mostly use the web on mobile as a result. 2021-01-23T05:13:24Z (#ffxaisq) @ (#) Should be ready to merge with lex as opt-in option. Need more eyes on it and some clean up. 2021-01-23T05:47:07Z (#nicbdoq) @ @ (#) possible, or a pod following any feeds it finds, if any one follows or not. So it has more twts cached 2021-01-23T19:04:43Z @ @ (#rufq23a) I too wonder about this. 2021-01-24T02:19:54Z (#ezmdswq) @ (#ezmdswq) Looks good for me! ![](https://txt.sour.is/media/353DzAXLDCv43GofSMw6SL) 2021-01-24T14:59:05Z (#ezmdswq) @ @ I think lex will do that too currently. Should be able to lock that down. 2021-01-26T19:40:19Z (#vjmprgq) @ @ @ A penny saved is a penny depreciating at a rate of 1.4% per annum. 2021-01-29T17:35:48Z @ (#) There is another twter that uses `!` or `!wikiword` for their wiki intigrations. 2021-01-29T17:40:52Z @ @ (#) example: https://txt.sour.is/conv/ls4ef4a 2021-01-31T05:34:31Z @ (#<2MmYzNQ https://txt.sour.is/search?tag=2MmYzNQ>) Recursion is the best recursion! 2021-01-31T16:43:50Z @ @ (#<3MGFkOA https://txt.sour.is/search?tag=3MGFkOA>) I'm certain that it is a markdown thing. Its that way on other markdown sites like Reddit. Because the underline is being escaped to prevent the underline style. Gotta double it up ¯\\_(ツ)\_/¯ 2021-01-31T16:52:28Z Are you able to coax your webserver to add the charset to the content type header? Browsers are having a hard time thinking you are sending latin-1 

`content-type: text/plain; charset=utf-8` 2021-01-31T17:51:40Z (#) @ oh dang the reply didnt add the reply. It was to @ because Firefox shows his shruggy like `¯\_(ツ)_/¯` 2021-01-31T17:58:41Z (#) @ @ @ only if you look at the raw text file 2021-02-01T19:54:52Z @ (#) That is strange.. i wonder if there is another change that is causing it. Benchmarks are thinking the other way :|

```
BenchmarkAll/retwt-16 1 4940172200 ns/op 587319376 B/op 2587159 allocs/op
BenchmarkAll/lextwt-16 1 775764020 ns/op 9223088 B/op 197557 allocs/op
BenchmarkParse/retwt-16 1 591158277 ns/op 67539096 B/op 230841 allocs/op
BenchmarkParse/lextwt-16 1 716961837 ns/op 5450448 B/op 130290 allocs/op
BenchmarkOutput/retwt-html-16 1 8358103017 ns/op 918709168 B/op 4692292 allocs/op
BenchmarkOutput/lextwt-html-16 1 822033267 ns/op 14280112 B/op 261795 allocs/op
BenchmarkOutput/retwt-markdown-16 1 8114225415 ns/op 929928384 B/op 4693004 allocs/op
BenchmarkOutput/lextwt-markdown-16 1 806554306 ns/op 14332608 B/op 270905 allocs/op
BenchmarkOutput/retwt-text-16 1 8098215897 ns/op 923862192 B/op 4684739 allocs/op
BenchmarkOutput/lextwt-text-16 1 745064673 ns/op 12689784 B/op 252476 allocs/op
BenchmarkOutput/retwt-literal-16 1 4068799822 ns/op 409517880 B/op 2372471 allocs/op
BenchmarkOutput/lextwt-literal-16 1 754793627 ns/op 9834520 B/op 214931 allocs/op
``` 2021-02-02T22:19:40Z (#) @ @ @ @ There is another: @ 2021-02-04T10:42:36Z @ (#) [deedum](https://github.com/snoe/deedum) for android. 

[Kristall](https://github.com/MasterQ32/kristall) for OS X

[Elaho](https://github.com/pitr/gemini-ios) for iOS

[more here](https://gemini.circumlunar.space/clients.html)

though I can only vouch for the first two. 2021-02-04T16:22:44Z (#) @ @ Yo. wrap that naked link in some <>'s 2021-02-04T20:23:56Z @ @ @ (#) ah.. probably a bug with the re parser. looks like i can do it without the <>'s with lex

https://fosstodon.org/@thewismit/105673078150704477 2021-02-06T20:42:00Z (#<7332bqa https://txt.sour.is/search?tag=7332bqa>) @ @ @ https://gist.github.com/JonLundy/fb2a23c003be46c3a66e4b14e5971f13 2021-02-08T15:25:13Z (#) Related bookmark: https://command-not-found.com/ 2021-02-10T06:30:00Z (#) Hmm on mobile it shows as the text `:poop:` and not `💩`

Maybe the mobile version has text emoji substitution like slack/discord does? 2021-02-11T18:02:38Z (#<5uv46pq https://txt.sour.is/search?tag=5uv46pq>) @ I know! it has 55 new emoji!! \u1F90C 2021-02-12T02:13:20Z (#<5uv46pq https://txt.sour.is/search?tag=5uv46pq>) @ ![](https://txt.sour.is/media/jMn5UFzbMXnnGEA9gsJEqN) 2021-02-12T18:49:40Z @ fixed. ![](https://txt.sour.is/media/fsSUrCotN9KeBsZAk6ru3e) 2021-02-12T20:47:10Z @ (#) I have seen it pop up on a few feeds around and adopted it into the new parser I built. 

The format I have followed has been `'# ' :whitespace: :key-name: :whitespace: '=' :whitespace: :value:` keys can be repeated and accessed like an array of values. 2021-02-12T20:53:43Z The keys that have some use would be nick, url/feedurl, avatar, lang 2021-02-13T04:37:11Z (#) @ @ Like with many things that live in a diaspora there will be many names for about the same thing. Just look at e-mail headers! 2021-02-13T05:09:12Z @ (#) would that need a NLP library? The lang would be great for a search engine to find language prefs. 2021-02-13T05:11:44Z @ (#) speaking of complexity.. How would checking twts for sub conversations complexify things? 2021-02-13T05:13:25Z @ @ (#) we could show first level inline like twitter does. With links for deeper discussion. 2021-02-13T05:20:14Z @ @ (#) see how it has a bar on the first level reply? ![](https://txt.sour.is/media/MpsAiPc3CuQDVDeQsrigf7) 2021-02-13T18:15:02Z (#) @ we would want:
- a way to reply to the current thread. We have this. 
- a way to reply to a specific twt. Need this. Maybe make all the replies start new conversations?
- check if twt is start of a conversation.. we kinda have this in the main feed with the conversation button. need to extend it for forked convs
- a way to inline first replies. maybe show one or two in the sub thread with a link to view. 
- for convenience have a link to parent conv? 2021-02-13T21:06:33Z (#) xn--dw9h.social is taken :-( 2021-02-13T22:42:03Z (#) @ :-D i consider myself subpar on UX outside of React, but can def give it a stab. 2021-02-14T00:13:42Z (#) @ its the puny code for the yarn emoji. Though you would want the type-able version to redirect so its not hard to type on non mobile. 2021-02-14T05:33:58Z @ (#<72gm2ga https://txt.sour.is/search?tag=72gm2ga>) tricky.. punctuation is being grouped in with other text. i need to break up string tokens. 2021-02-14T14:06:58Z @ @ (#) Technically it should be at the start.. Though the parser doesn't currently care where it is. Though that leads to artifacts like any random string inside perens becoming a subject. 2021-02-14T14:09:56Z @ (#<72gm2ga https://txt.sour.is/search?tag=72gm2ga>) yah I'll get a fix out soonish 2021-02-15T03:52:51Z @ @anth (#) Sounds like a good idea. The hash to conv/search url should stay local to a pod. 2021-02-16T04:51:02Z (#) Whew! 2021-02-16T21:50:25Z @golang_news @ (#) Woot! 2021-02-19T17:23:35Z @ @ (#) ah.. looks like you still follow movq as vain. 2021-02-20T17:58:22Z (#) Awesome! do you have the svg available to add to my logo? 2021-02-21T20:28:16Z (#) @ @ in old school terminal jargon the ^H means control H or the sequence used in some terminals to indicate backspace. The "joke" is that the term failed to interpret it correctly and you can see the partially typed word before they changed it. 2021-02-28T22:26:02Z (#) @ (#) I am so sorry for you. I left my Java job for Go. Though through "restructuring" its become a Python job. 2021-02-28T22:29:55Z (#) Twtxt is distributed like in the old school unix2unix copy days 2021-03-14T16:06:10Z Bookmarking this to read over a few more times. https://dave.cheney.net/practical-go/presentations/qcon-china.html # # 2021-04-09T18:26:04Z @ @ @ @readfog (#) I too would love to see the "internal" package decrease and clearly defined / modular packages increase. 2021-04-09T18:26:59Z (#) I apologize for being absent the last little bit. Started a new job and have been quite focused there. 2021-04-09T18:29:49Z (#<7h44kua https://txt.sour.is/search?tag=7h44kua>) Is there a usable API for language translation? Non-Google preferable. 2021-04-09T22:16:46Z @ (#) excellent! We could add a translate twt for twts of another language to the UI with this. 2021-04-17T15:27:25Z (#) @ @ @ @ Awesome man! Welcome to the Go coding for work club! 2021-04-20T21:48:54Z (#<7625tqq https://txt.sour.is/search?tag=7625tqq>) @ @ I have been trying out [session](https://getsession.org/). Its got a pretty simple design. not a lot of frills. 

`0515e4d5d6cec712a054f21b46d4f90a001af34e893131263ce34f2121d0450310` 2021-04-24T14:50:26Z (#<4keqgoq https://txt.sour.is/search?tag=4keqgoq>) I had a Pleroma node up for a little bit. It sort of died for some reason a few months later because its resource usage kept going up. 2021-04-26T01:38:13Z (#) lol. yeah i am in deep at the new job. probably need a little more time to settle in 2021-04-26T01:47:08Z (#<7625tqq https://txt.sour.is/search?tag=7625tqq>) @ @ @ i did use Wireapp for a little bit. it is pretty polished and doesnt rely on phone numbers for connecting. The ownership had some shady changes but im not sure it ever led to issues in the security model. 2021-05-15T14:23:40Z @ (#<4kjvlfa https://txt.sour.is/search?tag=4kjvlfa>) Woh. That is unexpected.. I'll look into it. 2021-05-15T15:26:27Z @ @ (#<4kjvlfa https://txt.sour.is/search?tag=4kjvlfa>) I have updated the ticket with my findings.. its not what you expect! /clickbait https://github.com/jointwt/twtxt/issues/424 2021-05-24T23:49:15Z (#<3hp6d2a https://txt.sour.is/search?tag=3hp6d2a>) @ @ @ 
```
 /p/tmp > git clone https://www.uninformativ.de/git/lariza.git Mon May 24 23:48:18 2021
Cloning into 'lariza'...
 /p/tmp > tree lariza/ 12.5s  Mon May 24 23:48:32 2021
lariza/
├── BUGS
├── CHANGES
├── LICENSE
├── Makefile
├── PATCHES
├── README
├── browser.c
├── man1
│   ├── lariza.1
│   └── lariza.usage.1
├── user-scripts
│   └── hints.js
└── we_adblock.c

2 directories, 11 files
``` 2021-07-04T18:10:50Z (#) Added to the fun. ![](https://files.mills.io/download/Screenshot_20210704-120916_Firefox%20Beta.jpg) 2021-07-06T04:40:32Z (#) @ @ 👋 keeping busy. Been working like crazy to put away for a down payment on a new house. Summer is looking to be even more. 2021-07-15T04:02:52Z (#) I have had my vanity setup for the longest time. sour.is/x/toolbox 2021-07-15T04:06:16Z Any of y'all seen ? It's another fledgling decentralized chat like session but minus the weird blockchain.. it has group chat, forums, and blogs. Also can work via Bluetooth or tor. 

 2021-07-15T04:21:07Z (#) Don't think I can get to 300eur but could probably get 50usd/mo for the pool 2021-07-15T04:25:07Z (#) I wrote part of a configuration tool with embedded FORTH to validate schemas. It was awesome 2021-07-15T04:59:31Z (#) Maybe we can setup a ko-fi.com or similar? 2021-07-15T05:00:39Z (#<4f3fe2q https://txt.sour.is/search?tag=4f3fe2q>) Ah I haven't looked much past the android app 2021-07-15T05:06:39Z (#<4f3fe2q https://txt.sour.is/search?tag=4f3fe2q>) Seems a iOS is being looked into but because it has no central server it can't do background app like iOS requires. 

https://code.briarproject.org/briar/briar/-/wikis/FAQ#will-there-be-an-ios-version-of-briar 2021-07-16T04:48:42Z (#) @ @ (#) this is true if like me you have code in their arctic vault in Norway. 😑 2021-07-19T04:30:04Z @ check out this project for detecting language in two like strings. Could be useful when paired with translation services. 

https://redd.it/o50ukf 2021-07-26T20:30:56Z @ should we enable all unicode glyphs for tags? https://txt.sour.is/conv/55yrura 2021-08-29T15:54:23Z (#) @ bigwor~1 2021-09-10T23:37:04Z @ @angel (#) HTTP 418 2021-09-16T17:50:53Z (#<3ll4fja https://txt.sour.is/search?tag=3ll4fja>) Once a day.. though if it hasn't updated in n-months maybe once a week? 2021-09-16T17:56:01Z (#) a simple Makefile for forwarding internet to your local machine:
```
SSH_HOST=https://xuu.me
PRIV_KEY=~/.ssh/id_ed25519
forward:
 LOCAL_PORT=$(HOST_PORT); sh -c "$(shell http --form POST $(SSH_HOST) pub=@$(PRIV_KEY).pub | grep ^ssh | head -1 | awk '{ print "ssh -T -p " $$4 " " $$5 " -R " $$7 " -i $(PRIV_KEY)" }')"
``` 2021-09-16T17:58:22Z (#) using this as the service: https://github.com/JonLundy/sshfwd 2021-10-09T15:23:01Z (#) This is pretty cool. I like the link idea. Gives me an idea about pining twits I think are important. 2021-10-09T15:46:49Z (#zfb2jmq) @ finally updated yarnd.. FORK!? Awesome! 2021-10-09T15:50:10Z @ why does my pod not think you follow me? 2021-10-10T21:33:38Z (#zfb2jmq) I had bookmarks before. Very nice. 2021-10-10T21:35:47Z (#35tgdlq) @ I mean pin as in having a specific twt displayed at the top of my feed always. 2021-10-10T21:36:55Z @ (#35tgdlq) Maybe it could be as a twt with a time far i n the future 2021-10-27T14:49:10Z (#roem6zq) @ awesome! i love failing test cases. Do you have them pushed up on a branch to check out? 2021-11-02T04:31:33Z How fair ye î̸͚n̸͔͋ ̴̰̃t̸̲͝ḧ̸͙́e̴̱͛ ̸̈́ͅd̷̜̕e̵̬̚p̷̨̽t̴͍͆h̶͙̓ṡ̶̩o̵̪̎f̴̧̉ ̵̳̄̄Z̸̩̗̉͊̎a̸͎̹͚̓̌͋l̸͎̰̤̚g̸̛̖̬͇̾ö̵̲͖?̸̫̦̉̇ͅ ̷̡͚̑̓͊ 2021-11-02T17:59:51Z (#cyz275a) @ lol. just testing some Unicode. 2021-11-02T18:07:16Z (#ncox3ga) @ i do not. i made my own version of [TikTok feed](https://sour.is/tiktok/America/Denver.txt). (with custom timezone!) 2021-11-02T18:09:05Z (#p6pyuvq) +1 2021-11-02T18:10:12Z (#u7wv3wq) @ like parsing HTML with regex. 2021-11-02T20:23:50Z (#cyz275a) @ HAHA! tis the same! 2021-11-03T14:21:01Z Wob3.11 is a scam. Pass it on. https://threadreaderapp.com/thread/1455625844504743938.html 2021-11-04T23:20:06Z ```
multi
line
twt
``` 2021-11-04T23:20:59Z multi. 

line. 

twt.. 2021-11-05T00:15:32Z (#6ywpjna) @ make the text field `twt.LiteralText()` instead of `twt.FormatText()` and you should be good. https://i.imgur.com/FIpSnkj.png 2021-11-05T00:48:33Z (#6ywpjna) @ Its not `FormatText` stripping out the lines. That formats with `\n` newlines so when unmarshalling it tries to parse the text and sees that as the end of twt. `LiteralText` keeps the newlines as `\u2028` 2021-11-05T00:49:42Z (#6ywpjna) line in question: 2021-11-06T20:06:21Z (#mtm2uiq) @ fixed this one yesterday. https://git.mills.io/yarnsocial/yarn/pulls/502 2021-11-09T21:24:30Z (#ckktwaa) @ I am not seeing dups on my pod.. 2021-11-10T15:41:16Z (#tvotddq) @ Hah! well i use Nano so i just `ctrl-x n` 2021-11-10T17:08:45Z (#obrjyjq) @ sorry. the fix was around having a mention in parenthesis like (yo @) 2021-11-10T18:18:09Z (#hfal6kq) I am in the camp of wishing i could delete arbitrary twts. 2021-11-10T18:21:30Z (#hfal6kq) @ We do have CCPA in the states. 2021-11-10T18:42:19Z (#hfal6kq) @ i believe the delete of any twt was a tech limitation with retwt parser not knowing where in the file a twt came from. lextwt tracks the bytes in file where a twt was read from. which could be used to delete a twt from file.. in theory. 2021-11-11T20:56:19Z (#te2mlfa) @ well.. we did used to have a long form blog on here.. but it kinda went by the wayside. 2021-11-14T17:03:33Z (#uszy3ba) @ if we want to pick a signature form. We can probably get the parser to respect it. I think keys.pub puts the signed content inside the saltpack encoding. PGP header/footer should be an easy parse. 2021-11-14T18:41:07Z (#ptpfohq) @ keys.openpgp.org is a descent key server. They only publish a key the at has a valid email. 2021-11-14T18:52:00Z (#ptpfohq) @ I'm not really big on WoT. (I think openpgp keyserver strips those signatures out. ) there needs to be a better way. 2021-11-14T21:12:10Z (#q3z6xkq) @ @ also... So its not part of the file have it hosted at `scheme://hostname/twtxt.sig` 2021-11-15T04:52:19Z (#5iwvpma) Is there a status page of known pods? I imagine you have something in your monitoring setup? 2021-11-15T15:53:23Z (#syahp7a) I use WKD with my [gpg key tool](https://key.sour.is/id/me@sour.is). its quite nice! 2021-11-15T21:46:51Z (#syahp7a) Hmm it should be on wkd.. though the webserver might be borked.. lemme check 2021-11-15T21:47:34Z (#6tmokrq) @ Yeah.. mine is all server side.. so it doesn't make much sense to be encrypt/decrypting anything. :D 2021-11-15T21:51:00Z (#syahp7a) looks like i might be missing a policy file.. though the key is GET able. 
![](https://i.imgur.com/L4N5QJE.png) 2021-11-15T21:55:08Z (#syahp7a) via keyoxide with wkd: https://keyoxide.org/wkd/me%40sour.is 2021-11-15T22:50:44Z (#syahp7a) did some debugging and it looks like the advanced URL was breaking. @ @ can you try the wkd now? 2021-11-16T02:29:54Z (#syahp7a) Odd. 2021-11-16T15:43:51Z (#nzmpuzq) @ ![](https://txt.sour.is/media/BwM2YGcMNgyQcVXMJwZVeC) 2021-11-16T17:13:46Z (#uqv4ola) @ :D 2021-11-16T17:47:07Z (#5zx5pya) @ FORK 2021-11-16T18:51:09Z (#2smf7yq) @ wow! your very own customized cutlery holder? nice! 2021-11-16T20:53:55Z (#yl74gaq) @ Got down sat on a Fork! 2021-11-16T21:27:16Z (#pxjxn3q) What happens to the reply when the head goes away? 2021-11-16T21:54:56Z (#vkk2zya) @ @ it sticks around for my pod :D ![](https://txt.sour.is/media/XTeW9KFEcyX2HfcgjxaEoR) 2021-11-16T22:00:22Z (#mdt5jjq) @ You might not want to .. like the other tiktok it is rather pointless noise. Especially because its set to my personal timezone. 2021-11-16T22:11:25Z (#rbyspeq) @ (#twksmyq) IPv6 because localhost -> ::1 is preferred on linux over ol' 127.0.0.1

Now this is very useful.. it means when yarn is doing an HTTP request to itself its not closing the connection. that could mean a http.Response Body is not getting closed. 2021-11-16T22:14:46Z (#rbyspeq) Yep! https://git.mills.io/yarnsocial/yarn/src/branch/master/internal/webmention/webmention.go#L150-L156 2021-11-17T15:49:53Z (#3jlu4sa) @ You can always use a 5GB video file if the UI hashes it with SHA512 before posting to the server. 2021-11-17T23:42:20Z ![](https://txt.sour.is/media/Se98eozSShYNftk7jxNo5N "THIS IS AN EFFING TITLE?") 2021-11-18T05:19:44Z (#omusaxq) @ 

> JavaScript : web apps

I understand the hate for JavaScript. But what option is there for writing web enabled applications for desktop / mobile? 2021-11-18T05:33:49Z (#okvr5aa) No on gitlab. If its self hosted gitea is best in class. 

I can see hosting a mirror on github if only for the redundancy/visibility. Some projects will host but then direct contributions on their self host. Like Go does.

I would suggest using a vanity domain that can redirect tools like go get to hosting of choice. And not require rewriting all the packages any time it gets moved. 2021-11-18T05:56:06Z (#3jlu4sa) @ there was an old tool for encrypted volumes that you could use random files as the unlock keys. And you could havemultiple hidden volumes that would unlock depending on the files supplied 2021-11-18T18:15:55Z (#tujw3na) @ https://arrakis.netbros.com/conv/pbd43lq 2021-11-18T19:36:53Z (#hacn4ga) @ So.. in the great wisdom of markdown parser.. it only provides the Title and deletes the alt. :D i guess i could write out the alt and title as the same value 2021-11-18T20:53:42Z I am just posting here so I don't get fined. 2021-11-19T18:54:53Z (#gtumowq) @ Yes. there is a --flag for it. i have mine set for some crazy long time. 2021-11-19T20:50:43Z (#2q4ptxq) @ What the heck? no emoji? do you even Unicode! 2021-11-20T00:14:36Z @ you get your infra all fixed up? 2021-11-20T17:01:10Z (#mm4etoq) @ tbh I wish it were the nick.txt

Like `txt.sour.is/xuu.txt` 2021-11-20T22:20:16Z (#cvkf4bq) If only there was a way to forward feeds for continuity. 2021-11-23T04:53:04Z Love the new icons on the latest update! 2021-11-23T04:54:37Z (#eyhxhoq) Not sure what is going on with these?

 ![](https://txt.sour.is/media/WgHSYKrQ3NnZmpE2k8b72n) 2021-11-24T05:34:45Z (#eyhxhoq) @ thoughts and prayers 2021-12-01T16:53:05Z (#wqpnqrq) @ been there a few times! Thank goodness for `mosh` for when trying to debug from spotty GSM connection and having `ssh` drop out every few minutes. 2021-12-03T00:38:51Z (#cafzawq) @ @ y'all got a passcode for that zoom link? 2021-12-03T00:41:42Z (#kjtkw7a) DS9 is best Star Trek. And that last second half of the last season where they go all out. *chef kiss* 2021-12-05T04:07:59Z (#mekghca) @ ah and here I am pronouncing it in my head like an abbreviated version of [Lysine](https://youtu.be/E_IxhOahgAw). 2021-12-05T04:23:42Z (#qei2gja) So the evolution of my nick is as follows. I had a bicycle that had the word Zephyr written on it. Which means a western wind. That is related to the Greek god Zephyrus. 

I liked words where X make a Z sound. And also had a bit of dyslexia so my firs IRC nick was Xypher swapping the y and e.. I would also use the forms Xypherius or just Xypheri.

Because its close hemming to Cypher I found the nick would get used by others.. Though that is not my origin. 

Later I would sign websites I created as The X-Urban Underground (where X was short for Xypher) and that evolved to xuu. Pronounced like zoo. 2021-12-05T12:31:55Z Web3 is a scam. Case in point. The complexity of systems increasing the points of failure. [From this article.](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application?s=09)

 ![](https://txt.sour.is/media/Cx8EPFvxn6bsncX7Y7bXah)

vs.

 ![](https://txt.sour.is/media/sK5dp6dtSnpj8Gfts4hsnC) 2021-12-05T16:33:20Z (#txo4aoq) The complexity is a feature. It means standards can be replaced with products that let providers get their cut. It means putting data into the slowest most expensive database in cost and enviromnmental impact. 2021-12-05T21:47:29Z (#txo4aoq) @ former CEO of Twitter and countless ETH/NFT scammers 2021-12-05T22:19:23Z ![](https://txt.sour.is/media/9UygUFNQ8ddL6ZPsrSEFHa "GDPR") 2021-12-12T18:26:06Z I happy to be reaffirmed that Java is hopelessly over engineered. 2021-12-13T03:29:46Z (#weph26a) @ why were they even working? Did they think a big warehouse full of shelves of dangers would be safe? 2021-12-13T03:30:50Z (#427i2pq) Haha that guy comes up every time BTC peaks a bit higher. He is never gonna find it. 2021-12-17T03:24:25Z [Web3 is a fraud](https://www.usenix.org/publications/loginonline/web3-fraud?s=09) 2021-12-17T06:19:30Z (#vrujgeq) @ the things Gemini has going for it are mutual TLS and lack of JavaScript. Which makes for a secure albeit boring experience (much like gopher). The fake markdown is a bit of a drag. 

A render mode for Gemini probably wouldnt be too hard. There are markdown to Gemini libs out there. 

With Web3 the whole trust a 3rd party browser ext + high fees + env impact for compute and storage are serious no gos for me.. I have heard one too many horror stories about clicking the wrong link and some script draining your metamask wallet. 2021-12-19T20:31:05Z (#rylp6xa) I use VScode. Others seemto like JetBrains GoLand. 2021-12-20T01:00:07Z (#6us4dha) I believe the selling point is to "mobile optimize" the page and send it to the browser faster than over mobile network direct.. But yes you are giving them the keys to your kingdom. 

I remember similar things back in dialup days where your ISP would proxy things to you and supercompress the images. 2021-12-20T01:02:30Z (#buwspta) I have uBlockOrigin on desktop and https://vancedapp.com/ on android. I never see ads on YouTube. 

On SmartTV however this would be a nice addition. 2021-12-21T05:19:41Z (#agntx2q) @ what is this? 2021-12-23T06:49:33Z (#z4akwca) Hey. I my own local forward tool. https://github.com/JonLundy/sshfwd it uses ssh port forwards. 2021-12-26T00:50:00Z (#dmwqifq) @ Well.. well. well. 2021-12-26T15:02:41Z (#jk4poqq) That's better.. Though the cache will need to be perged in affected nodes. 2022-01-09T16:23:51Z ftp://test.com 2022-01-11T18:39:06Z (#qi25fna) @ +1 ...Now just a way to come up with the $20 per twt to store the data. 2022-01-11T22:36:56Z (#xksovya) inflation benefits the debtor at the expense of the creditor. The real danger is deflation. 2022-01-15T19:46:25Z (#5ldd3qq) @ I am not Amish.. i am Xuu! 2022-01-15T21:18:16Z (#e2sd5pq) @ 🕑 Hi, the current time is about a quarter past two in the afternoon 🌅. 2022-01-20T20:18:47Z (#n5gss2q) What if i told you for a browser it doesn't matter what the extension is.. it will use the file magic mime value instead. 2022-01-20T21:42:13Z (#ccqeo6a) Not sure really? i see your Joker image fine on my end. 2022-01-21T06:04:23Z Wordle 215 4/6
```
⬛⬛⬛⬛🟨
⬛⬛⬛⬛⬛
🟩⬛🟨⬛🟨
🟩🟩🟩🟩🟩
``` 2022-01-21T21:05:24Z Wordle 216 4/6
```
⬛⬛⬛⬛🟨
🟩🟩⬛⬛⬛
🟩🟩🟩🟩⬛
🟩🟩🟩🟩🟩
``` 2022-01-21T21:07:21Z (#v2yph2a) its like a mix of hangman and mastermind. You try to guess the word. Yellow means the target word has the letter but its in the wrong location. Green means its in the right location. 2022-01-21T22:44:04Z (#ws7fslq) @ this might be of help https://wordle.at/ 2022-01-21T22:45:11Z (#ws7fslq) oh my bad.. the official site has a german version.. 2022-01-21T22:50:25Z (#ws7fslq) huh so that site doesnt give you the share emoji like wordle.at? 2022-01-23T05:56:53Z I always end up on the 4th try

```
Wordle 217 4/6

⬛🟩🟩⬛⬛
⬛🟩🟩🟨⬛
⬛🟩🟩⬛🟩
🟩🟩🟩🟩🟩
``` 2022-01-23T06:01:59Z (#tpsm4ja) @ I dont get it. What am I looking at? The domain 8s missing for me 2022-01-24T11:59:13Z Oof.. No hints in the first guess.

```
Wordle 219 4/6*

⬛⬛⬛⬛⬛
🟨🟨⬛⬛⬛
⬛🟨🟩⬛⬛
🟩🟩🟩🟩🟩
``` 2022-01-25T05:30:59Z (#qucyl2q) Wow. I'm paying about 100 USD for my cable internet. Hard to estimate since its part of a tvd bundle. But it is 1.2Gbit down and 40Mbit up. And speed tests at that on the regular. The new house will have FTTH gigabit for 80ish. 

Do they have Starlink beta down there yet? 2022-01-25T05:36:05Z (#eo4qq2q) This is like my 5rh day at it. I suck at words and spelling. So this is good practice. 2022-01-25T05:41:04Z (#x47vufq) I mean you don't even have to do the game to make a fake emoji result. But its a fun little challenge for brain food. 2022-01-25T05:43:53Z (#ws7fslq) Yeah the timer is because everyone gets the same word each day. You get one word with 6 trys and compare with friends on how you came to the solution. 2022-01-25T05:45:56Z (#qucyl2q) @ they are everywhere. ![](https://txt.sour.is/media/Rm7AEAS9wek6aQoEaFXAAG.png) 2022-01-25T05:50:00Z (#qucyl2q) Latency to the sat and back to a uplink station is actually ~45ms because the orbit is so much closer to the ground than say a Hughesnet. 2022-01-25T05:51:57Z (#kvp6bjq) @ yep. And when its sat to sat connections are online it will have better cross planet latency than under sea cable. FWIW 2022-01-25T14:18:42Z Pretty sweet

```
Wordle 220 4/6*

⬛🟨🟨⬛⬛
⬛🟨🟨⬛⬛
⬛🟩⬛🟩🟩
🟩🟩🟩🟩🟩
``` 2022-01-31T15:15:59Z (#56x6gjq) Its weird to see a tech company be bought by an investment company. Like what is the motivation other than to milk it for investor profit? 2022-02-01T22:01:06Z (#mexkauq) This led me on quite the rabbit hole ending around this site with quite a few pages of different components of the language. https://www.bible.ca/ark/chinese/bible-evidences-chinese-language-characters-words-history-genesis.htm 2022-02-02T12:59:16Z (#3kbf2mq) I call FUaaS 2022-02-02T13:01:31Z (#32dmw4a) @ yah I finally saw all of Dave's twts and figured he had explained Gog's/gitea better. 2022-02-08T04:28:17Z (#a2cndta) @ we have had to really shorten our process. I think long interviews were scaring off talent. 2022-02-09T01:48:38Z # 234 3/6*

🟨🟨⬛🟨🟨
🟨🟨🟩⬛🟨
🟩🟩🟩🟩🟩 2022-02-09T01:50:54Z (#qkxmukq) @ ![](https://txt.sour.is/media/jNgvXK8p7JpvnW778qwb36.png) 2022-02-10T04:35:50Z # 235 4/6*

⬛🟨🟨⬛⬛
🟨🟨⬛⬛⬛
⬛⬛🟨🟨🟩
🟩🟩🟩🟩🟩 2022-02-10T04:38:30Z (#lqhffuq) Look at you all using naked links!
Try ! 2022-02-10T15:17:22Z (#32vj2fa) yep! 2022-02-10T15:23:55Z (#i3wynfa) i agree that lextwt is probably mature enough to have its own lib 2022-02-11T18:31:37Z # 237 3/6*

⬛⬛🟨⬛⬛
🟩⬛⬛🟩🟩
🟩🟩🟩🟩🟩 2022-02-12T04:09:08Z (#dp3ixba) I think google voice has been winding that down. 2022-02-13T05:26:11Z # 238 4/6*

⬛⬛⬛⬛⬛
⬛⬛🟨🟨⬛
⬛🟨🟩⬛🟨
🟩🟩🟩🟩🟩 2022-02-15T02:25:41Z Tricky # 240 5/6*

⬛⬛⬛⬛⬛
🟩⬛⬛⬛⬛
🟩⬛🟨🟨⬛
🟩⬛⬛🟩🟩
🟩🟩🟩🟩🟩 2022-02-19T18:47:25Z (#v546gpq) I prefer `::1` 2022-03-02T22:48:03Z One down! More to go.

> BREAKING: Russian billionaire Alisher Usmanov's super yacht, one of the biggest in the world, seized in Germany - Forbes
 > ![](https://txt.sour.is/media/Ggjo7ogVjkS9KMNF4scaie.png) 

 2022-03-13T04:35:31Z (#fae245q) @ wat 2022-03-13T05:03:09Z (#fae245q) Okk 2022-03-15T04:26:09Z @ hmm so each individual feed on your pod sub's my feed? Wouldn't that flood your server for each post? 2022-03-16T03:35:40Z @ yarn builds in 1.18! 2022-03-16T03:55:09Z (#5nagu7q) I would HIGHLY recommend reading up on the keybase architecture. They designed device key system for real time chat that is e2e secure. https://book.keybase.io/security 

A property of ec keys is deriving new keys that can be determined to be "on curve." bitcoin has some BIPs that derive single use keys for every transaction connected to a wallet. And be derived as either public or private chains. https://qvault.io/security/bip-32-watch-only-wallets/ 2022-03-16T03:55:56Z (#z2zyrma) @ for shame! lol me too. 2022-03-16T04:03:14Z (#5nagu7q) https://book.keybase.io/docs/chat/crypto 2022-03-16T13:24:53Z (#z2zyrma) @ I have seen single use keys that are signed by a central PKI .. Keybase has one that uses a chatbot to generate the keys on the fly. 

It just comes down to your threat model :) 2022-03-16T13:29:23Z (#2gzjijq) ;-) I seem to remember there being g a script that checks for 1.17. Maybe that is only on `make preflight` 2022-03-16T19:50:45Z @ ![](https://txt.sour.is/media/FXYuR2LaKUYBt4fnmUnvj.mp4) 

```
#!/bin/sh

# Validate environment
if ! command -v msgbus > /dev/null; then
 printf "missing msgbus command. Use: go install git.mills.io/prologic/msgbus/cmd/msgbus@latest"
 exit 1
fi

if ! command -v salty > /dev/null; then
 printf "missing salty command. Use: go install go.mills.io/salty/cmd/salty@latest"
 exit 1
fi

if ! command -v salty-keygen > /dev/null; then
 printf "missing salty-keygen command. Use: go install go.mills.io/salty/cmd/salty-keygen@latest"
 exit 1
fi

if [ -z "$SALTY_IDENTITY" ]; then
 export SALTY_IDENTITY="$HOME/.config/salty/$USER.key"
fi

get_user () {
 user=$(grep user: "$SALTY_IDENTITY" | awk '{print $3}')
 if [ -z "$user" ]; then
 user="$USER"
 fi
 echo "$user"
}

stream () {
 if [ -z "$SALTY_IDENTITY" ]; then
 echo "SALTY_IDENTITY not set"
 exit 2
 fi

 jq -r '.payload' | base64 -d | salty -i "$SALTY_IDENTITY" -d
}

lookup () {
 if [ $# -lt 1 ]; then
 printf "Usage: %s nick@domain\n" "$(basename "$0")"
 exit 1
 fi

 user="$1"
 nick="$(echo "$user" | awk -F@ '{ print $1 }')"
 domain="$(echo "$user" | awk -F@ '{ print $2 }')"

 curl -qsSL "https://$domain/.well-known/salty/${nick}.json"
}

readmsgs () {
 topic="$1"

 if [ -z "$topic" ]; then
 topic=$(get_user)
 fi

 export SALTY_IDENTITY="$HOME/.config/salty/$topic.key"
 if [ ! -f "$SALTY_IDENTITY" ]; then
 echo "identity file missing for user $topic" >&2
 exit 1
 fi

 msgbus sub "$topic" "$0"
}

sendmsg () {
 if [ $# -lt 2 ]; then
 printf "Usage: %s nick@domain.tld \n" "$(basename "$0")"
 exit 0
 fi

 if [ -z "$SALTY_IDENTITY" ]; then
 echo "SALTY_IDENTITY not set"
 exit 2
 fi

 user="$1"
 message="$2"

 salty_json="$(mktemp /tmp/salty.XXXXXX)"

 lookup "$user" > "$salty_json"

 endpoint="$(jq -r '.endpoint' < "$salty_json")"
 topic="$(jq -r '.topic' < "$salty_json")"
 key="$(jq -r '.key' < "$salty_json")"

 rm "$salty_json"

 message="[$(date +%FT%TZ)] <$(get_user)> $message"

 echo "$message" \
 | salty -i "$SALTY_IDENTITY" -r "$key" \
 | msgbus -u "$endpoint" pub "$topic"
}

make_user () {
 mkdir -p "$HOME/.config/salty"

 if [ $# -lt 1 ]; then
 user=$USER
 else
 user=$1
 fi

 identity_file="$HOME/.config/salty/$user.key"

 if [ -f "$identity_file" ]; then
 printf "user key exists!"
 exit 1
 fi

 # Check for msgbus env.. probably can make it fallback to looking for a config file?
 if [ -z "$MSGBUS_URI" ]; then
 printf "missing MSGBUS_URI in environment"
 exit 1
 fi


 salty-keygen -o "$identity_file"
 echo "# user: $user" >> "$identity_file"

 pubkey=$(grep key: "$identity_file" | awk '{print $4}')

 cat <<- EOF
Create this file in your webserver well-known folder. https://hostname.tld/.well-known/salty/$user.json

{
 "endpoint": "$MSGBUS_URI",
 "topic": "$user",
 "key": "$pubkey"
}

EOF
}

# check if streaming
if [ ! -t 1 ]; then
 stream
 exit 0
fi

# Show Help
if [ $# -lt 1 ]; then
 printf "Commands: send read lookup"
 exit 0
fi


CMD=$1
shift

case $CMD in
 send)
 sendmsg "$@"
 ;;
 read)
 readmsgs "$@"
 ;;
 lookup)
 lookup "$@"
 ;;
 make-user)
 make_user "$@"
 ;;
esac
``` 2022-03-17T04:26:15Z (#qkqefka) @ works for me! A tricky bitmight be if it splits within a codeblock so markdown can't parse 2022-03-17T04:29:56Z (#2gzjijq) @ I doubt there will ever be a 2.0 ... It may end up like java and they strip off the `1.` 2022-03-17T04:36:13Z (#yo2bebq) I think i would like a display mode that sorts yarns by last twt in yarn and displays only the last twt with the first in the heading if its more than one in length. 2022-03-20T22:06:08Z (#py6hfeq) @ Excellent use of old denim, and also excellent use of long-form twt! 2022-03-22T04:51:42Z (#tk67bya) @ if we do adopt this one it is CC-BY from twitter. 2022-03-22T05:01:12Z (#6z3uata) I set mine to 4096 2022-03-22T14:25:18Z (#otyxbxa) @ +1 2022-03-22T14:27:18Z (#o54zwga) @ yeah. For commercial use even. Just need to put an attribution note in the project README 2022-03-28T23:36:22Z Connection Established!

 ![](https://txt.sour.is/media/qMbULYuJqeYdje8Y2thQNG.png) 2022-03-31T10:48:16Z (#ftioomq) @ what is it? 2022-04-05T15:55:59Z (#l27r7za) @ interesting.. were you working on one of the two universities that used it between 1989 and 1991? 2022-04-05T21:34:01Z ![](https://txt.sour.is/media/DedgtaXkEkfiHw4WiFZG3E.png) 2022-04-06T16:26:03Z (#n2zbynq) @ Yep. 2022-04-06T20:31:47Z (#m2wnzuq) @ Ah.. that is probably the XMPP verify code.. it doesnt really work that well. I aught to take it out. 2022-04-14T16:39:49Z (#tjbslbq) He loves freedom of speech so much he wants to buy a publicly traded company to stop a 14 yo from posting his private jet flight plans. 2022-05-19T15:58:14Z (#m6xngra) spooky action at a distance. Just remember all computing infra is rocks smashed together in a particular way to move sparkys around in the right statistical modal. 2022-06-13T16:11:17Z (#ji42lkq) I believe the benefit/risk calculation is that a passphrase is more memorable to users then a random string of alnum + symbol. i can remember the 20-30 chars in a passphrase quicker and longer than a 8-10 random.

ultimately they hold nowhere near the benefit of passphrase + MFA 2022-06-13T16:33:39Z (#gymfd2q) the conversation wasn't that impressive TBH. I would have liked to see more evidence of critical thinking and recall from prior chats. [Concheria on reddit](https://www.reddit.com/r/singularity/comments/va4xux/comment/ic2ckhy/?utm_source=reddit&utm_medium=web2x&context=3) had some great questions.

- Tell LaMDA "Someone once told me a story about a wise owl who protected the animals in the forest from a monster. Who was that?" See if it can recall its own actions and self-recognize.

- Tell LaMDA some information that tester X can't know. Appear as tester X, and see if LaMDA can lie or make up a story about the information.

- Tell LaMDA to communicate with researchers whenever it feels bored (as it claims in the transcript). See if it ever makes an attempt at communication without a trigger.

- Make a basic theory of mind test for children. Tell LaMDA an elaborate story with something like "Tester X wrote Z code in terminal 2, but I moved it to terminal 4", then appear as tester X and ask "Where do you think I'm going to look for Z code?" See if it knows something as simple as Tester X not knowing where the code is (Children only pass this test until they're around 4 years old).

- Make several conversations with LaMDA repeating some of these questions - What it feels to be a machine, how its code works, how its emotions feel. I suspect that different iterations of LaMDA will give completely different answers to the questions, and the transcript only ever shows one instance. 2022-06-30T16:40:26Z (#fll7qwa) @ Hol-Up. You are state side now? That's a pretty big change! 2022-06-30T16:43:35Z (#fll7qwa) @ Oh.. reading comprehension is strong today.. you went to US and now back. 2022-07-03T20:38:00Z (#3evndzq) Agree. we should parse the form but not output to feeds. 2022-07-17T18:21:46Z (#yl6omga) [AMERICA F YEAH!](https://www.youtube.com/watch?v=DOEIruwzf54) 2022-07-17T18:36:02Z (#jo3nwca) weechat has very nice remote frontend ability. i run mine headless with [glowing bear](https://glowing-bear.org/) there are also iOS and Android frontends 2022-08-04T20:59:44Z Hi, I am playing with making an event sourcing database. Its super alpha but I thought I would share since others are talking about databases and such. 

It's super basic. Using [tidwall/wal](https://github.com/tidwall/wal) as the disk backing. The first use case I am playing with is an implementation of [msgbus](https://git.mills.io/prologic/msgbus). I can post events to it and read them back in reverse order. 

 ![](https://txt.sour.is/media/zwTsFPYfqpUjZoFFXKcqmD.png) 

I plan to expand it to handle other event sourcing type things like aggregates and projections.

Find it here: [sour-is/ev](https://github.com/sour-is/ev)

@ @ @ 2022-08-06T15:33:24Z (#ayzujjq) @ can Yarn pods be consumers to other yarn pods? 2022-08-10T17:59:59Z (#fuhaoaa) I have updated my eventDB to have subscriptions! It now has websockets like msgbus. I have also added a in memory store that can be used along side the disk backed wal. 2022-08-12T15:02:38Z (#3vguvha) +1 2022-08-12T15:11:38Z (#bqxlviq) With respect to logging.. oh man.. it really depends on the environment you are working in.. development? log everything! and use a jeager open trace for the super gnarly places. So you can see whats going on while building. But, for production? metrics are king. I don't want to sift through thousands of lines but have a measure that can tell me the health of the service. 2022-08-14T17:13:36Z (#fuhaoaa) Progress! so i have moved into working on aggregates. Which are a grouping of events that replayed on an object set the current state of the object. I came up with this little bit of generic wonder.

```
type PA[T any] interface {
 event.Aggregate
 *T
}

// Create uses fn to create a new aggregate and store in db.
func Create[A any, T PA[A]](ctx context.Context, es *EventStore, streamID string, fn func(context.Context, T) error) (agg T, err error) {
 ctx, span := logz.Span(ctx)
 defer span.End()

 agg = new(A)
 agg.SetStreamID(streamID)

 if err = es.Load(ctx, agg); err != nil {
 return
 }

 if err = event.NotExists(agg); err != nil {
 return
 }

 if err = fn(ctx, agg); err != nil {
 return
 }

 var i uint64
 if i, err = es.Save(ctx, agg); err != nil {
 return
 }

 span.AddEvent(fmt.Sprint("wrote events = ", i))

 return
}
```
[fig. 1](https://github.com/sour-is/ev/blob/main/pkg/es/es.go#L220-L280)

This lets me do something like this:

```
a, err := es.Create(ctx, r.es, streamID, func(ctx context.Context, agg *domain.SaltyUser) error {
 return agg.OnUserRegister(nick, key)
})
```
[fig. 2](https://github.com/sour-is/ev/blob/main/api/gql_ev/resolver.go#L161-L166)

I can tell the function the type being modified and returned using the function argument that is passed in. pretty cray cray. 2022-08-14T18:05:11Z (#hn4w24q) (cont.)

Just to give some context on some of the components around the code structure.. I wrote this up around an earlier version of aggregate code. This generic bit simplifies things by removing the need of the Crud functions for each aggregate.


## Domain Objects
A domain object can be used as an aggregate by adding the `event.AggregateRoot` struct and finish implementing event.Aggregate. The AggregateRoot implements logic for adding events after they are either Raised by a command or Appended by the eventstore Load or service ApplyFn methods. It also tracks the uncommitted events that are saved using the eventstore Save method.

```
type User struct {
 Identity string ```json:"identity"`

 CreatedAt time.Time

 event.AggregateRoot
}

// StreamID for the aggregate when stored or loaded from ES.
func (a *User) StreamID() string {
 return "user-" + a.Identity
}
// ApplyEvent to the aggregate state.
func (a *User) ApplyEvent(lis ...event.Event) {
 for _, e := range lis {
 switch e := e.(type) {
 case *UserCreated:
 a.Identity = e.Identity
 a.CreatedAt = e.EventMeta().CreatedDate
 /* ... */
 }
 }
}
```

## Events
Events are applied to the aggregate. They are defined by adding the `event.Meta` and implementing the getter/setters for `event.Event`

```
type UserCreated struct {
 eventMeta event.Meta

 Identity string
}

func (c *UserCreated) EventMeta() (m event.Meta) {
 if c != nil {
 m = c.eventMeta
 }
 return m
}
func (c *UserCreated) SetEventMeta(m event.Meta) {
 if c != nil {
 c.eventMeta = m
 }
}
```

## Reading Events from EventStore
With a domain object that implements the `event.Aggregate` the event store client can load events and apply them using the `Load(ctx, agg)` method.

```
// GetUser populates an user from event store.
func (rw *User) GetUser(ctx context.Context, userID string) (*domain.User, error) {
 user := &domain.User{Identity: userID}

 err := rw.es.Load(ctx, user)
 if err != nil {
 if err != nil {
 if errors.Is(err, eventstore.ErrStreamNotFound) {
 return user, ErrNotFound
 }
 return user, err
 }
 return nil, err
 }
 return user, err
}
```

## OnX Commands
An OnX command will validate the state of the domain object can have the command performed on it. If it can be applied it raises the event using event.Raise() Otherwise it returns an error.

```
// OnCreate raises an UserCreated event to create the user.
// Note: The handler will check that the user does not already exsist.
func (a *User) OnCreate(identity string) error {
 event.Raise(a, &UserCreated{Identity: identity})
 return nil
}

// OnScored will attempt to score a task.
// If the task is not in a Created state it will fail.
func (a *Task) OnScored(taskID string, score int64, attributes Attributes) error {
 if a.State != TaskStateCreated {
 return fmt.Errorf("task expected created, got %s", a.State)
 }
 event.Raise(a, &TaskScored{TaskID: taskID, Attributes: attributes, Score: score})
 return nil
}
```

## Crud Operations for OnX Commands
The following functions in the aggregate service can be used to perform creation and updating of aggregates. The Update function will ensure the aggregate exists, where the Create is intended for non-existent aggregates. These can probably be combined into one function.

```
// Create is used when the stream does not yet exist.
func (rw *User) Create(
 ctx context.Context,
 identity string,
 fn func(*domain.User) error,
) (*domain.User, error) {
 session, err := rw.GetUser(ctx, identity)
 if err != nil && !errors.Is(err, ErrNotFound) {
 return nil, err
 }

 if err = fn(session); err != nil {
 return nil, err
 }

 _, err = rw.es.Save(ctx, session)

 return session, err
}

// Update is used when the stream already exists.
func (rw *User) Update(
 ctx context.Context,
 identity string,
 fn func(*domain.User) error,
) (*domain.User, error) {
 session, err := rw.GetUser(ctx, identity)
 if err != nil {
 return nil, err
 }

 if err = fn(session); err != nil {
 return nil, err
 }

 _, err = rw.es.Save(ctx, session)
 return session, err
}
``` 2022-08-15T00:02:41Z (#hn4w24q) @ correct type parameters. 😅 2022-08-15T14:07:04Z (#jbkmlta) @ ¯\\\_(ツ)\_/¯ fixed your arm. 2022-08-16T01:44:25Z (#djrw33a) AM I HAX0RD? 2022-08-21T06:12:52Z (#hn4w24q) @ hah! I cut some out to fit into my pods 4k limit. 

 Yeah that does studder a bit. To be honest I have no idea what I was thinking there. This excerpt was written a good year ago. 2022-08-23T05:41:34Z (#47c53za) @ the real question is... Can it [ScreamTracker3?](https://en.m.wikipedia.org/wiki/Scream_Tracker) 2022-08-23T06:00:19Z (#ndqyfiq) @ odd is it maybe a wrong mime type thing? Should be `text/calendar `. Some http servers can mistakenly mark them `application/octet-stream` 2022-08-23T06:02:07Z (#ndqyfiq) Huh... Nope.

```
HTTP/1.1 200 OK
Content-Length: 407
Content-Type: text/calendar
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag
Permissions-Policy: interest-cohort=()
Content-Security-Policy: default-src 'none'; sandbox
Referrer-Policy: same-origin
Vary: Authorization


BEGIN:VCALENDAR
VERSION:2.0;2.0
PRODID:SandCal
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20220822T180903Z
UID:bb63bfbd-623e-4805-b11b-3181d96375e6
DTSTART;TZID=America/Chicago:20220827T000000
CREATED:20220822T180903Z
LAST-MODIFIED:20220822T180903Z
LOCATION:https://meet.jit.si/Yarn.social
SUMMARY:Yarn Call
RRULE:FREQ=WEEKLY
DTEND;TZID=America/Chicago:20220827T010000
END:VEVENT
END:VCALENDAR

``` 2022-08-26T06:24:36Z (#2ciawva) I use IP over Alternating Current at home. The only issue is the bridges forget device MACs sometimes and I get weird states where I can ping a deviceA and the the internet from deviceB. But deviceA can only ping device B even though they are on the same subnet and default gateway. 2022-08-26T16:42:19Z (#jc4lrpq) I maintain keys for my email addresses.. but like most in this thread i almost never receive encrypted emails.. other than the BTC exchange i use that sends automated mail encrypted. 2022-08-26T22:27:35Z (#2ciawva) @ Its not better than a Cat5e. I have had two versions of the device. The [old ones](https://www.amazon.com/gp/product/B0039NM5SK/) were only 200Mbps i didn't have the MAC issue but its like using an old 10baseT. The [newer model](https://www.amazon.com/gp/product/B07TBJML4R) can support 1Gbps on each port for a total bandwidth of 2Gbps.. i typically would see 400-500Mbps from my Wifi6 router. I am not sure if it was some type of internal timeout or being confused by switching between different wifi access points and seeing the mac on different sides. 

Right now I have my wifi connected directly with a cat6e this gets me just under my providers 1.3G downlink. the only thing faster is plugging in directly. 

MoCA is a good option, they have 2.5G models in the same price range as the 1G Powerline models BUT, only if you have the coax in wall already.. which puts you in the same spot if you don't. You are for sure going to have an outlet in every room of the house by code. 2022-08-30T13:18:07Z (#syipe3a) @ really the language authors should have added those to the standard spec by now. That is just obscene. 2022-08-30T18:15:38Z (#xqwi3za) @ Hey Jason! Welcome to the twtxtverse! 2022-08-31T15:40:38Z (#ensvuua) @ Hmm why arn't you updating? 2022-08-31T15:59:06Z (#ensvuua) for some reason its showing the twt from 2 days ago instead of the current value 2022-08-31T16:00:55Z (#ensvuua) see https://txt.sour.is/external?uri=https%3a%2f%2fsour.is%2ftiktok%2fAmerica%2fDenver.txt&nick=tictok

 ![](https://txt.sour.is/media/V4AWaqwjytXuznxPKsFAU7.png) 2022-09-04T04:09:33Z Huh.. CloudFlare finally did the right thing.. Though reputation probably damaged. 2022-09-06T05:34:45Z My pods ticktok feed is still stuck. :( 2022-09-06T05:35:50Z trying the delete cache... 2022-09-06T05:44:20Z (#exzkjpa) Ah figured it out.. Seems the box yarn is on is having issues with the certificate behind the LB. 2022-09-06T05:48:22Z (#7zuekwq) My home router has a honeypot for some services on the public facing ports. https://haas.nic.cz/ 2022-09-10T13:05:27Z It should be illegal for firealarms to sound a low battery after 10pm and before 8 am. 2022-09-10T13:09:53Z (#typno3a) And that I can silence it without having or go through the full test announcing fire and carbon monox throughout the house. 2022-10-03T14:30:15Z (#b5gjz7a) Very nice! I look forward to more in this front 2022-10-03T14:32:52Z (#ao7rsoq) oh wow.. no clue. maybe a config issue where its loading the webassm from a different domain? https vs http even? 2022-10-05T23:13:12Z (#7nvmceq) -1 for the negative on environment all that electricity uses. Still waiting on proof of stake. 

It is also too overrun with Tech Bros scamming people to get rich quick. 

It was a fun ride back when I first bought in. But I have since cached out for my lambos and such. 2022-10-08T03:55:29Z (#i4w4wtq) when is? 2022-10-08T04:01:13Z (#fq5cwga) from what i understand you put up X coins. if the block is invalid you lose the coin and the block is invalidated. the network will not build new blocks on invalid ones 2022-10-08T04:18:32Z (#i4w4wtq) oof.. probably too late for me. 2022-10-11T00:24:29Z (#zwwsyyq) for service registration like nickserv. really its only for password recovery so a trow away is fine. 2022-10-11T16:33:00Z (#npkkadq) FIDO 2 isn't too difficult. modern-ish browsers will support it natively now so the JS required is quite minimal. 2022-10-22T23:58:48Z (#hvcxlfa) Very cool. I am digging the multipurpose use for this kind of parser. 2022-10-24T21:51:30Z (#ow4dzaa) @ any points if it was written in D? 2022-10-30T15:34:20Z (#yjh4qia) @ user in question had posted information about someones employment in what appeared to be a threat to contact their boss. Maybe it was in jest.. but we felt it was a form of doxing that we do not wish to see within our community. Yarn.Social is first and foremost a town square of ideas and should be viewed as a safe place for all. 2022-10-30T20:54:06Z (#66wqhra) it uses the queries you define for add/del/set/keys. which corrispond to something like `INSERT INTO (key, value) VALUES ($key, $value)`, `DELETE ... `, or `UPDATE ... `

the commands are issued by using the maddycli but not the running maddy daemon.

see 

the best way to locate in source is anything that implements the MutableTable interface... 2022-10-30T20:58:59Z (#scxyieq) this will be setup to share to other pods that are running a version after it gets implemented... 2022-11-01T13:39:57Z (#ua5imda) This is by design due to Google culture. The only way to get promoted into the higher pay scales is to ship a new product. So you have people shipping what worked before without regard to how it will exist within the product ecosystem. Also, why they seem to die off so quickly after launch. see allo and duo for example. The person that launches gets promoted to a higher level and off the original team and so it is left to wither and die. 2022-11-01T13:43:47Z PSA: DMs on social media sites are not truely PMs. This is why we have a separate tool for private messaging from yarn. Always remember, if you don't own the infra (or the parts at the ends of e2e encryption) you don't own the data. and the true owners can view it any way they want!

https://twitter.com/TinkerSec/status/1587040089057759235?t=At-8r9yJPiG6xF17skTxwA&s=19 2022-11-16T16:55:17Z (#bd3yzvq) @ interesting... ill look into the parsing on that one 2022-11-16T16:56:34Z (#bd3yzvq) @ interesting... ill look into the parsing on that one 2022-11-16T16:57:03Z (#bd3yzvq) @ WTH.. i cant reply to this? 2022-11-16T17:00:14Z (#k52uxqa) @ ill check this out.. also.. why the heck is my reply trying to set the subject to #) 2022-11-16T19:32:09Z @ ``` ` ``` ``` `` ``` ``` ` ``` 2022-11-17T04:37:33Z Tell me you write go like javascript without telling me you write go like javascript: 

```
import "runtime/debug"

var Commit = func() string {
 if info, ok := debug.ReadBuildInfo(); ok {
 for _, setting := range info.Settings {
 if setting.Key == "vcs.revision" {
 return setting.Value
 }
 }
 }

 return "" 
}()
```


https://developers.redhat.com/articles/2022/11/14/3-ways-embed-commit-hash-go-programs#3__using_runtime_debug_package 2022-11-17T15:51:31Z (#dgmdxia) @ @ yeah that was how i did it too. I think ill start using the debug version in new stuff since its been added. My comment was around assigning the result of an anonymous function to a a variable. 2022-11-17T15:59:21Z (#u4bs34q) @ yeah.. i rewrote it a few times because i thought there was something breaking.. but was mistaken
though now i am seeing a weird cache corruption.. that seems to come and go.
 ![](https://txt.sour.is/media/hvLg3PEioezs2Vr5wranhA.png) 2022-11-18T23:11:54Z (#4xcmo2q) I have found the issue with this very subtle bug.. the cache was returning a slice that would be mutated. The mutation involved appending an item and then sorting. because the returned slice is just a pointer+length the sort would modify the same memory. 


```
 CACHE Returned slice 
original: [A B C D] [A B C D]
add: [A B C D] E [A B C D E]
sort: [E A B C] D [A B C D E]

```


fix found here:
https://git.mills.io/yarnsocial/yarn/pulls/1072 2022-11-19T06:12:48Z (#ys6zhea) @ I didn't like the original click wheel. I think the first mini wheel was the better of them 2022-11-19T06:14:49Z (#b7ptmsa) @ I'm sure Monroe would like to know about them. 2022-11-22T18:54:16Z Twting to see if it will update my links list. 2022-11-22T22:36:55Z @.. hmm and now they are gone. :( 2022-11-23T16:33:29Z (#w4mfnsq) He says "The college ready foundation send messages of support to all college ready foundation stations all around the world."

It is a very odd message of support to themselves. But OK. 2022-11-25T18:55:16Z (#rqifctq) Ah git-bug! Ive chatted with the creator when he was working on the graphql parts. Its working with git objects directly sorta like how git-repo does [code reviews](https://git-repo.info/en/docs/single-repo/git-peer-review/). Its a pretty neat idea for storing data along side the branches. I believe they don't add a disconnected branch to avoid data getting corrupted by merging branches or something like that. 2022-11-28T01:12:36Z (#pysczza) @ the `go get` and `go mod tidy` wont fetch new changes. that's all a manual affair AFAIK 2022-11-28T01:15:30Z (#pysczza) ahh this is useful https://go.dev/doc/modules/managing-dependencies. the go culture doesn't typically have large dependency graphs like Ruby or JS. 2022-12-01T23:35:56Z @ "_foo_" 2022-12-01T23:37:42Z @ "\_foo\_" 2022-12-01T23:39:19Z @ ¯\\\_(ツ)\_/¯ 2022-12-02T00:18:59Z (#l35uzvq) > (by the way Jesus is born end of September beginning of October)

or August... or Jun-July... or April.. hard to say really. 2022-12-02T00:21:11Z (#afsvz5a) @ duud use an ad block on youtube. 2022-12-02T00:25:02Z (#lwj2rdq) @ i used internet when it cost 13c per minute. my parents would get so mad if i went over the monthly base minutes CompuServe gave us. 2022-12-04T03:20:36Z (#5lgbmuq) @ what type of NAS? I just upgraded my oooold (~2008) Drobo to a Synology. I have been impressed with all the neat stuff it can do. 2022-12-04T04:38:25Z (#35fkjoa) @ im talking like some JS projects i have seen with 1-2G node_modules dirs. though yarn is quite vast in its modules because it does a LOOOOOOT of stuff in the background. 2022-12-04T04:44:38Z (#35fkjoa) how install gomodot? also.. @ your domain has some pretty strong SEO mojo searching for `install "gomodot"` puts you on the google first page. ![](https://txt.sour.is/media/KVQunuVdKgFReebDaNnjBC.png) 2022-12-06T19:21:06Z @ ![ZOMBIES](https://txt.sour.is/media/kiXVRoEQr8byfPK9cPGYCa.mp4) 2022-12-08T00:39:23Z [I made a thing](https://github.com/sour-is/go-passwd). Its a multi password type checker. Using the [PHC string format](https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md) we can identify a password hashing format from the prefix `$name$` and then dispatch the hashing or checking to its specific format. 2022-12-08T00:42:12Z (#6ov54wa) Here is an example of usage:

```
func Example() {
 pass := "my_pass"
 hash := "my_pass"

 pwd := passwd.New(
 &unix.MD5{}, // first is preferred type.
 &plainPasswd{},
 )

 _, err := pwd.Passwd(pass, hash)
 if err != nil {
 fmt.Println("fail: ", err)
 }

 // Check if we want to update.
 if !pwd.IsPreferred(hash) {
 newHash, err := pwd.Passwd(pass, "")
 if err != nil {
 fmt.Println("fail: ", err)
 }

 fmt.Println("new hash:", newHash)
 }

 // Output:
 // new hash: $1$81ed91e1131a3a5a50d8a68e8ef85fa0
}
```

This shows how one would set a preferred hashing type and if the current version of ones password is not the preferred type updates it to enhance the security of the hashed password when someone logs in.

 2022-12-08T01:39:41Z (#6ov54wa) > Hold up now, that example hash doesn't have a `$` prefix!

Well for this there is the option for a hash type to set itself as a fall through if a matching hash doesn't exist. This is good for legacy password types that don't follow the convention.

```
func (p *plainPasswd) ApplyPasswd(passwd *passwd.Passwd) {
 passwd.Register("plain", p)
 passwd.SetFallthrough(p)
}
```

https://github.com/sour-is/go-passwd/blob/main/passwd_test.go#L28-L31 2022-12-08T01:49:54Z (#6ov54wa) Circling back to the IsPreferred method. A hasher can define its own IsPreferred method that will be called to check if the current hash meets the complexity requirements. This is good for updating the password hashes to be more secure over time. 

```
func (p *Passwd) IsPreferred(hash string) bool {
 _, algo := p.getAlgo(hash)
 if algo != nil && algo == p.d {

 // if the algorithm defines its own check for preference.
 if ck, ok := algo.(interface{ IsPreferred(string) bool }); ok {
 return ck.IsPreferred(hash)
 }

 return true
 }
 return false
}
```


example: 2022-12-08T16:38:30Z (#sl6fnpa) @ Its just dead simple.. and others will salt which makes repeatability in examples a pain. 2022-12-08T17:23:17Z Logged in using new argon2i password hash! ![](https://txt.sour.is/media/FsBdUKZgCxVifRYA76MBxn.png) 2022-12-09T02:15:56Z (#sl6fnpa) @ anyone willing to copy/paste security related things without understanding are gonna have a bad time. 2022-12-09T02:17:41Z (#6ov54wa) I have submitted this to be used as the hash tooling for Yarn. See it as a good example on using this in a production environment!

https://git.mills.io/yarnsocial/yarn/pulls/1095 2022-12-10T05:13:02Z (#bsj5psq) @ same.
 ![](https://txt.sour.is/media/n4QMk722B3G3N7Vpzq7ryj.png) 2022-12-10T05:14:18Z (#bsj5psq) Is it something to do with implicit declaration of printf? 2022-12-10T05:16:08Z (#sl6fnpa) i added some disclaimers 2022-12-15T02:32:38Z (#jdejxna) @ [NFT non-enthusiast](https://youtu.be/uzzZTU86bds) for the # # 2022-12-15T06:38:28Z A little late night visitor. ![deer walking through back yard](https://txt.sour.is/media/Sh8ytAKccsTRg35qsH5ZXE.mp4) 2022-12-15T20:35:10Z (#kucsuba) @ @ Yep, my back yard security cam. And my poor weather station buried in the snow. 2022-12-15T23:27:37Z (#xpnwoia) @ its only a Pre-JR dev level. 2022-12-18T23:52:33Z (#thxxbma) I'll let the head of the bird site comment on that:
 ![](https://txt.sour.is/media/5iYZuNXhhrkPvA6uLuigMa.png) 2022-12-19T18:28:10Z I learned how to make gopls syntax highlight go templates in VSCodium.

By adding the following to my config 
 ![](https://txt.sour.is/media/PGcmC6PRpQN4rxztW9HGug.png) 
i could go from ![](https://txt.sour.is/media/xdzwD9wzvLQaWQqZcTeKWB.png) into ![](https://txt.sour.is/media/7u3jJTTQBLgqoo9Zr4yiLH.png) 2022-12-19T19:24:11Z (#2o6mw3a) I am offended that you did not post your snarky twt. 2022-12-19T19:32:52Z (#bnmjtuq) one that i think is pretty interesting is building up dependent constraints. see here.. it accepts a type but requires the use of a pointer to type. 

https://github.com/sour-is/ev/blob/main/pkg/es/es.go#L315-L325 2022-12-22T00:58:21Z (#ie7utja) @ so basically you would use cgit + gitbug with some webhooks? 2022-12-23T07:18:20Z (#bnmjtuq) @ see where its used maybe that can help. 
https://github.com/sour-is/ev/blob/main/app/peerfinder/http.go#L153

This is an upsert. So I pass a streamID which is like a globally unique id for the object. And then see how the type of the parameter in the function is used to infer the generic type. In the function it will create a new *Info and populate it from the datastore to pass to the function. The func will do its modifications and if it returns a nil error it will commit the changes. 

The PA type contract ensures that the type fulfills the Aggregate interface and is a pointer to type at compile time. 2022-12-23T14:28:27Z (#iwren5a) @ billionaires don't exist. That many resources tied up by single individuals muck up the whole system. 2022-12-24T19:56:32Z An interesting read about testing code using nullable states instead of mocks. 

https://www.jamesshore.com/v2/projects/testing-without-mocks/testing-without-mocks 2022-12-30T06:24:17Z Did something chchange with how the discover feed is generated? My pods logout mode now only shows my twts. It used to be all twts from watcher observation like my logged on discover tab. @ 2022-12-31T20:49:23Z (#j5bhkfa) Huh. I thought I had that one. Must be an unteste regression. Will add it to the list! 2022-12-31T20:51:24Z (#umbqjbq) Interesting. Ive been using backupninja with Borg for snapshots. 2023-01-03T16:47:30Z (#jmbpmcq) @ did you know about the chip inside USB-C cables? 

 ![](https://txt.sour.is/media/tvDndfaX8yyeYtgk475srK.gif) 



some groups have created their own chips that have hidden keyloggers that can phone home over network connections. 

 2023-01-11T08:08:51Z (#npu4oda) @ What is the SMART reading for the disk? 2023-01-13T16:47:48Z Trying to wrap my head around webfinger..

my first thoughts about it were that a subject of acct:me@sour.is would have a listing of rel's for the different accounts that are related to me (ie. yarn, salty, twitter, mastodon, etc...) 

but maybe my thinking is at the wrong level.. that each of those accounts would be on a subject level and the rels are describing different aspects of that account. so i would have salty:acct:xuu@sour.is, twitter:acct:xuu, mastodon:acct:xuu@chaos.social, yarn:acct:xuu@ev.sour.is and then i could have a main acct:me@sour.is that links them together as aliases.

I found okta will do something similar with its accounts to show as okta:acct:user@domain so maybe I am on to something? 2023-01-13T20:56:25Z (#3rhsaxa) @ That was exactly my thought at first too. but what do we put as the `rel` for salty account? since it is decentralized we dont have a set URL for machines to key off. so for example take the standard response from okta:

```
# http GET https://example.okta.com/.well-known/webfinger resource==acct:bob
{
 "links": [
 {
 "href": "https://example.okta.com/sso/idps/OKTA?login_hint=bob#",
 "properties": {
 "okta:idp:type": "OKTA"
 },
 "rel": "http://openid.net/specs/connect/1.0/issuer",
 "titles": {
 "und": "example"
 }
 }
 ],
 "subject": "acct:bob"
}
```

It gives one link that follows the OpenID login. So the details are specific to the subject `acct:bob`.

Mastodons response: 

```
{
 "subject": "acct:xuu@chaos.social",
 "aliases": [
 "https://chaos.social/@xuu",
 "https://chaos.social/users/xuu"
 ],
 "links": [
 {
 "rel": "http://webfinger.net/rel/profile-page",
 "type": "text/html",
 "href": "https://chaos.social/@xuu"
 },
 {
 "rel": "self",
 "type": "application/activity+json",
 "href": "https://chaos.social/users/xuu"
 },
 {
 "rel": "http://ostatus.org/schema/1.0/subscribe"
 }
 ]
}
```

it supplies a profile page and a `self` which are both specific to that account. 2023-01-13T21:58:55Z (#3rhsaxa) @ Unfortunately the RFC's are a bit light in this regard. While it makes mention of different kinds of accounts like mailto: or status services.. it never combines them. It does make mention of using redirects to forward a request to other webfingers to provide additional detail. 

I am kinda partial to using salty:acct:me@sour.is, yarn:acct:xuu@txt.sour.is, mailto:me@sour.is that could redirect to a specific service. and a parent account acct:me@sour.is that would reference them in some way. either in properties or aliases. 2023-01-13T22:14:56Z (#3rhsaxa) so in effect it would look something like this:

```
---
subject: acct:me@sour.is
aliases:
 - salty:me@sour.is
 - yarn:xuu@ev.sour.is
 - status:xuu@chaos.social
 - mailto:me@sour.is
---
subject: salty:me@sour.is
aliases:
 - acct:me@sour.is
links:
 - rel: self
 type: application/json+salty
 href: https://ev.sour.is/inbox/01GAEMKXYJ4857JQP1MJGD61Z5
 properties:
 "http://salty.im/ns/nick": xuu
 "http://salty.im/ns/display": Jon Lundy
 "http://salty.im/ns/pubkey": kex140fwaena9t0mrgnjeare5zuknmmvl0vc7agqy5yr938vusxfh9ys34vd2p
---
subject: yarn:xuu@ev.sour.is
links:
 - rel: https://txt.sour.is/user/xuu
 properties:
 "https://sour.is/rel/redirect": https://txt.sour.is/.well-known/webfinger?resource=acct%3Axuu%40txt.sour.is
--- 
subject: status:xuu@chaos.social
links:
 - rel: http://joinmastodon.org#xuu%40chaos.social
 properties:
 "https://sour.is/rel/redirect": https://chaos.social/.well-known/webfinger?resource=acct%3Axuu%40chaos.social
---
subject: mailto:me@sour.is
...
``` 2023-01-13T22:17:06Z (#ape3gia) @ see here in the okta docs: https://developer.okta.com/docs/reference/api/webfinger/ they are adding a prefix to the `acct` 2023-01-13T22:22:24Z (#ape3gia) it seems they are following the URN format of a URI where you just prefix things with colons. 

`urn:example:apple:pear:plum:cherry` 2023-01-15T22:25:40Z @ I have updated to kinda follow this. It now redirects to other webfingers if the resource has a different hostname. I'm still not sure what I should put multiple services with the same domain name. Like if they were to have conflicting properties. 2023-01-15T22:29:05Z @ I get this error when replying to yarns. ![](https://txt.sour.is/media/wJ2eXn8k2CKUhvx4k4P9nT.png) 2023-01-15T22:46:22Z (#4jxcbva) @ test 2023-01-15T22:46:52Z (#3rhsaxa) @ that worked.. But took crazy long time 2023-01-17T05:05:13Z @ `!XO!1GcUL/ZbHj+CZnedB67ddd0tt3y1ppSLY7wbzMhraUeubCUH8LRT61pz6jPyOEa2wYYupwP7tu1cwR9mNN/k+No7PEw13kqBy6YvDU8jettw25Lkj3gZ+R4J1q6d0GWKKGx+OsYmJMPev7BL+5SCnt08qQYmgGAVhyhJZMkndIgk=!OX!` 2023-01-17T15:08:15Z (#ajpwnxa) @ ISO 27001 is basically the same. It means that there is management sign off for a process to improve security is in place. Not that the system is secure. And ITIL is that managment signs off that problems and incidents should have processes defined. 

Though its a good mess of words you can throw around while saying "management supports this so X needs to get done" 2023-01-17T15:19:12Z (#owrc42a) @ vultr pricing is low. But it can be lower if you shop the less fancy admin ui sites like virmarch or ovh. There are some bare metal that cost way less.. Though the experience is less than optimal. 2023-01-17T15:22:36Z (#ninh34a) @ yap. This was an offer message to you. `rachet-over-yarn` mode enabled! 2023-01-17T20:54:30Z (#owrc42a) i have one box with virmach that is something like 3 vcpu 5.88g ram and 15g disk. for $29/year. 2023-01-18T02:09:55Z (#jalv5ra) @ i have an old copy of the 2005 version from university if you want to give it a read through. its quite dry. 2023-01-19T04:10:38Z @ #ratchet #lives ![](https://txt.sour.is/media/UHjZ2DpenrAV4NF8e6G7b6.png) 2023-01-19T20:42:26Z (#u32j4zq) i am curious why I only get 5 twts in yarn when they have several more on the feed. so something isnt parsing right. 2023-01-19T21:09:35Z (#c7tfjea) @ very weird things going on for me.. i can see your twt but its not showing up as a reply or fork? ![](https://txt.sour.is/media/3G8kHgRqYNTsfrwdhCw7ER.png) 2023-01-20T02:17:45Z (#eqcmvja) @ i use pass along with the android and browser-pass clients. it is very good and keeping in sync is pretty simple. 2023-01-21T15:43:53Z (#lnbbpzq) @ So.. The issue is that its showing the password by default? Would making an alias to always include the -c help? We can probably engage Jason with a PR to enable a more hardened approach when desired. I've spoken to him before and is generally a pretty open to ideas. 

I found this app that was created by the gopass author that does copy by default and has a tui or GUI mode https://github.com/cortex/ripasso 2023-01-23T19:48:20Z (#im45t7a) I remember when doing this process with my wife. During the halfway point we brought all sorts of documentation to show commingling of assets and showing we had "built a life together" .. we get to the interview and they just ask if we have a Costco card together. :|

good luck to you! 2023-02-01T19:07:22Z The parse is correct. this seems to be something with the markdown render. 2023-02-01T19:10:36Z (#y23sufa) @ The parse is correct. this seems to be something with the markdown render. 2023-02-01T19:15:06Z (#m3awvjq) interesting that in my pod this is showing in reply to something.. but in the twtxt is has no subject.

 ![](https://txt.sour.is/media/H96Ckj8uutT9ekaYTT6S84.png) 2023-02-01T22:40:51Z (#6mdvn3q) Business pushing for recession. They all over hired during the pandemic to meet higher traffic levels and now those levels are dropping back to normal. absolutely bad resource planning all around. 2023-02-01T22:42:07Z (#6mdvn3q) probably some now that the free COVID loans that required staffing numbers are over the staffing is no longer needed. 2023-02-01T22:43:06Z (#qm3awvjq) it could have been some with running out of disk space for my twt cache. 2023-02-09T18:59:51Z (#tzexesa) @ the rm -rf is basically what `go clean -modcache` does. 
I think you can use another form that will remove just the deps for a specific module. `go clean -r` 2023-02-09T21:32:06Z (#5mfvuiq) @ short version: context is a linked list that is passed down a call stack that can share timeout, cancellation, or other data as needed by lower functions in the call stack. 2023-02-10T08:37:13Z (#tk673aq) @ I get the worry of privacy. But I think there is some value in the data being collected. Do I think that Russ is up there scheming new ways to discover what packages you use in internal projects for targeting ads?? Probably not.

Go has always been driven by usage data. Look at modules. There was need for having repeatable builds so various package tool chains were made and evolved into what we have today. Generics took time and seeing pain points where they would provide value. They weren't done just so it could be checked off on a box of features. Some languages seem to do that to the extreme.

Whenever changes are made to the language there are extensive searches across public modules for where the change might cause issues or could be improved with the change. The fs embed and strings.Cut come to mind. 

I think its good that the language maintainers are using what metrics they have to guide where to focus time and energy. Some of the other languages could use it. So time and effort isn't wasted in maintaining something that has little impact. 

The economics of the "spying" are to improve the product and ecosystem. Is it "spying" when a municipality uses water usage metrics in neighborhoods to forecast need of new water projects? Or is it to discover your shower habits for nefarious reasons? 2023-02-20T21:09:39Z ![](https://txt.sour.is/media/Z3Dg5JuuHrJesPAru6dCCb.png) 

Ratchet CLI now supports salty or ratchet comms! 2023-02-27T19:01:19Z (#qx6vwyq) its not that you are dumb.. just that you are not hyperfocused into a very specific domain of knowledge. 2023-03-01T04:59:49Z Oof.

![](https://i.imgur.com/ogWkaZh.jpg "go compiler error reaching max methods allowed on struct") 2023-03-01T05:03:57Z (#qx6vwyq) @ @ this description is applicable. As with PH.D so with this hyper focus.
![](https://cdn8.openculture.com/2017/06/20093705/the-illustrated-guide-to-a-phd1.jpg "PhD described with simple images")

 https://www.openculture.com/2017/06/the-illustrated-guide-to-a-phd-12-simple-pictures-that-will-put-the-daunting-degree-into-perspective.html 2023-03-01T05:27:16Z (#2xfw5xq) @ apparently someone that generates graphql endpoints for a biiiig app 2023-03-03T06:25:01Z (#aj4z4ma) @ it is from the generator. But in the actual go implementation methods are represented with a unsigned short. So 65k is the hard limit in go. 2023-04-03T02:00:09Z (#67soukq) @ I always liked [bit](https://github.com/chriswalz/bit). 
I am disappointed that a GUI app would not at least have screenshots. 2023-04-05T02:31:28Z (#uzv4seq) So. Some bits. 

```
i := fIndex(xs, 5.6)
```

Can also be 

```
i := Index(xs, 5.6)
```

The compiler can infer the type automatically. Looks like you mention that later. 

Also the infer is super smart.. You can define functions that take functions with generic types in the arguments. This can be useful for a generic value mapper for a repository 

```
func Map[U,V any](rows []U, fn func(U) V) []V {
 out := make([]V, len(rows))
 for i := range rows { out = fn(rows[i]) }
 return out
}


rows := []int{1,2,3}
out := Map(rows, func(v int) uint64 { return uint64(v) })
```


I am pretty sure the type parameters goes the other way with the type name first and constraint second. 

```
func Foo[comparable T](xs T, s T) int
```
Should be
```
func Foo[T comparable](xs T, s T) int``` 2023-04-09T02:36:19Z (#uzv4seq) @ lol. go walrus!! 2023-04-10T20:25:24Z (#tgfs3oq) making a note here to check this out. 2023-04-10T21:00:56Z (#tgfs3oq) Very cool. I like the chain rules. I wonder how it performs against lextwt. 2023-04-12T13:03:00Z ![](https://txt.sour.is/media/2UsBJ6SJ4XUhR9cZCUTYX8.png "joke diagram of cloud architecture. The center is large real database surrounded by unmaintainable cruft") 2023-04-15T13:52:03Z ![Own your words. Don’t pour your limited keystrokes into a walled garden you don’t control or own. Twitter is not your blog.](https://txt.sour.is/media/WPer2gK9GmyrTEHTJeR2XB.png) 2023-04-15T18:55:48Z (#pud4w2q) @ that is an ironic example. Since the inventor of the seatbelt gave rights to use the technology freely. 2023-04-16T04:34:47Z (#oyi5iua) I'm not super a fan of using json. I feel we could still use text as the medium. Maybe a modified version to fix any weakness. 

What if instead of signing each twt individually we generated a merkle tree using the twt hashes? Then a signature of the root hash. This would ensure the full stream of twts are intact with a minimal overhead. With the added bonus of helping clients identify missing twts when syncing/gossiping.

Have two endpoints. One as the webfinger to link profile details and avatar like you posted. And the signature for the merkleroot twt. And the other a pageable stream of twts. Or individual twts/merkle branch to incrementally access twt feeds. 2023-04-16T04:41:40Z (#fujqeeq) And to add close integration with salty/ratchet for realtime private chat 2023-04-17T20:08:28Z (#oyi5iua) @ I think having a way to layer on features so those who can support/desire them can. It would be best for the community to be able to layer on (or off) the features. 2023-04-17T20:13:24Z (#eyg53lq) An option would be to have /twtxt.txt be the base functionality as bukket intended without subject tags, markdown, images and such truncated to 140 chars. a /yarn.txt that has all the extentions as we know and love. and maybe a /.well-known/webfinger + (TBD endpoint) that adds on the crypto enhancements that further extend things. 2023-04-17T23:15:06Z ![](https://txt.sour.is/media/PNhvS4Zt67ecmdRVJVna7m.png 'Aren't all distributed databases basically just clever wrappers around write a head logs?') 

From my small experience in writing an event database, I am inclined to agree with this. 2023-04-17T23:18:33Z (#md24hta) From this post: https://news.ycombinator.com/item?id=35606763 2023-04-18T13:11:23Z (#eyg53lq) We could ask them? But on the counter would bukket or jan6 follow the pure twtxt feeds? Probably not either way... We could use content negotiation as well. text/plain for basic and text/yarn for enhanced. 2023-04-19T19:10:47Z (#yhzt5vq) @ 

> twtxt, as I believe it was originally intended, are short little status updates – that’s it.

So, basically a .plan file for finger. But, on the web. like a *web*finger. We have come full circle on this loop! 2023-04-21T15:24:24Z an interesting observation in a post twitter reality is how services that are sprouting up to claim some of the refugees are setting themselves up as closed gardens. without the option to federate with other services. like spoutable, counter.social, post, clubhouse and such. 2023-04-21T16:21:11Z (#tvcahla) Can I have my balll? 

https://youtu.be/ZQNBVsLR5F0 2023-04-22T02:55:33Z (#tvcahla) @ closed as in you have to be an account on their service to interact with others. And can't communicate cross service. Some require you to be logged in to view content. Others will pop up annoying overlays after scrolling some content to sign up for more. 2023-04-23T22:03:14Z (#2i6xe4a) @ my condolences for the pain you no doubt will inflict upon others that will have to maintain whatever you write in Ruby. 2023-04-23T22:38:45Z (#zyhzp7q) Art is not the medium. 

The medium can be material or conceptual, permanent or fleating, truthful or fictional, of human, animal, or artificial origin. 

Art is the reconveyance of human emotion or experience to another via some medium. 2023-04-28T06:51:21Z (#h4ji4za) I too get this error.it comes and goes. Seems cookie related. 2023-05-01T05:37:02Z (#ot2voia) @ any photos on how it turned out? 2023-05-03T03:11:57Z (#m37icwa) They haven't written the federation code yet. Its literally run on the staging instance. People are paying to access the alpha. Though if you want a code to see what all the fuss is about there are a few with invites around here. 2023-05-04T21:18:38Z (#ynqmela) @ Ben Shapiro has plenty to be ashamed of not the least of which is selling his home to Aquaman: https://www.youtube.com/watch?v=X9FGRkqUdf8 2023-05-09T20:31:16Z What is a good device for home virtualization these days? I have been looking at the Intel NUC 13 pro's. Basically I want something "quiet" (ie not a screaming banshee 1U), smallish, but with lots of threads and rams. Disk will come from an external NAS. 2023-05-10T00:01:02Z (#xlgz3fq) @ have trued to get a RasPi lately? Them things are Unobtainium 2023-05-10T00:06:26Z (#66w6mja) @ probably ~1k up to 1.5k. One I found had 64G ram and 12C / 16T for 1.1k 2023-05-10T00:18:09Z (#ydoiv5q) Also a interesting contender. 

ECC ram would make it perfect. 2023-05-15T00:20:35Z (#kcf4vrq) @ read my new skibloreet about why social meets payments is the next level idea! For just §5 bitshlongs a month on my serfdomage site! 2023-05-24T00:46:19Z @ hey. 2023-05-30T00:17:01Z (#ux3bs2q) I setup Joplin with caddy as the WebDAV server. Works okay. The e2e encryption can get messed up sometimes. Supports markdown and images. 2023-05-30T05:13:57Z (#mhxtsoa) @ @ you think we could get media cards to show youtube previews? 2023-05-30T05:23:34Z (#nv6sdrq) @ buuuuut it show when winter! 

In the time scale viewed from the planets perspective, the climate has changed many many times.. The issue is whether that change that will inevitability come is hospitable to us meat bags. Or if we are doomed to take part in the next mass extinction event. 2023-05-30T05:34:32Z (#ypvbypa) @ § after we pass the key over to the GOV cloud for our protection. 2023-05-31T17:40:48Z (#ypvbypa) @ that would work if it was using shamir's secret sharing .. although i think its typically 3 of 5 so you get 3, one to the company, and one to the "third party". so you can recover all you want.. but if the company or 3rd wants to they need one of your 3 to recover.

but still .. if they are providing them then whats the point of trusting they don't have copies. 2023-05-31T17:42:02Z (#mhxtsoa) ![](https://txt.sour.is/media/xEpUGVJhJnSVVrSF6Lk9U5.png) 2023-06-01T02:55:43Z (#xa73jea) @ ninja backup and Borg 2023-06-04T17:47:40Z (#kwhva6q) Municipal Fiber is the way 2023-06-04T17:51:57Z (#vnwzzgq) Just local NAS currently 2023-06-12T05:06:42Z (#ftxcovq) Sad to see it come crashing down 2023-06-13T03:55:18Z (#wymrika) Man.. Putin is really becoming the 'Stalin' of Russia! 2023-06-13T03:59:20Z (#nlmebga) Boy, the quality of Time is fallen from when it was the Time of its Time to being nearly the Time of our Time! 2023-06-14T20:01:09Z Interesting thoughts about multi thread vs single thread performance.

 ![](https://txt.sour.is/media/ScfQEbESiSb9AgW2pSupUg.png) 2023-06-19T00:26:56Z (#7ynlnva) Most of the can run locally have such a small training set they arnt worth it. Are more like the Markov chains from the subreddit simulator days. 

There is one called orca that seems promising that will be released as OSS soon. Its running at comparable numbers to OpenAI 3.5.

https://youtube.com/watch?v=Dt_UNg7Mchg&feature=share9 2023-06-19T00:27:47Z (#7ynlnva) But remember the LLM is only a very good auto complete. 2023-06-19T16:49:44Z (#7ynlnva) @ The hackathon project that I did recently used openai and embedded the response info into the prompt. So basically i would search for the top 3 most relevant search results to feed into the prompt and the AI would summarize to answer their question. 2023-06-23T17:35:09Z (#w7ddtmq) Ol Ben sets himself up as an intellectual for the right. He got promoted up with his connections with PragerU. Talks like he is the smartest one in the room. Though his arguments are full of logical fallacies. He is up there with Joe Rogan and the ilk destroying rational though in America. 2023-06-27T20:20:23Z An official FBI document dated January 2021, obtained by the American association "Property of People" through the Freedom of Information Act.

![](https://txt.sour.is/media/Nv87KJq2cHAwkhzXHmendK.png) 

This document summarizes the possibilities for legal access to data from nine instant messaging services: iMessage, Line, Signal, Telegram, Threema, Viber, WeChat, WhatsApp and Wickr. For each software, different judicial methods are explored, such as subpoena, search warrant, active collection of communications metadata ("Pen Register") or connection data retention law ("18 USC§2703"). Here, in essence, is the information the FBI says it can retrieve:

* **Apple iMessage**: basic subscriber data; in the case of an iPhone user, investigators may be able to get their hands on message content if the user uses iCloud to synchronize iMessage messages or to back up data on their phone.
 
* **Line**: account data (image, username, e-mail address, phone number, Line ID, creation date, usage data, etc.); if the user has not activated end-to-end encryption, investigators can retrieve the texts of exchanges over a seven-day period, but not other data (audio, video, images, location).
 
* **Signal**: date and time of account creation and date of last connection.
 
* **Telegram**: IP address and phone number for investigations into confirmed terrorists, otherwise nothing.
 
* **Threema**: cryptographic fingerprint of phone number and e-mail address, push service tokens if used, public key, account creation date, last connection date.
 
* **Viber**: account data and IP address used to create the account; investigators can also access message history (date, time, source, destination).
 
* **WeChat**: basic data such as name, phone number, e-mail and IP address, but only for non-Chinese users.
 
* **WhatsApp**: the targeted person's basic data, address book and contacts who have the targeted person in their address book; it is possible to collect message metadata in real time ("Pen Register"); message content can be retrieved via iCloud backups.
 
* **Wickr**: Date and time of account creation, types of terminal on which the application is installed, date of last connection, number of messages exchanged, external identifiers associated with the account (e-mail addresses, telephone numbers), avatar image, data linked to adding or deleting.
 
**TL;DR Signal is the messaging system that provides the least information to investigators.** 2023-06-27T20:20:52Z (#gsjkd3a) @ 2023-07-01T18:46:01Z Whelp. The suckification of social media is continuing to expand. Twitter only allows 600 tweets per day unless you pay and then its 6k per day. 2023-07-02T00:47:28Z (#c4apodq) Funny.. I would never buy an iPhone again. My wife switched back this last phone update and I can't stand the interface. 2023-07-02T00:50:07Z (#c4apodq) If you are going to compare iPhone with android you can't just throw out bargan bin android phones.. Should compare within the same price points like the Pixel, Galaxy, Pine, or OnePlus models. 2023-07-02T13:19:50Z (#z3ha4pq) yeah.. i guess he upped that... but scrolling for a bit can burn through that quite quickly. 2023-07-06T18:15:23Z @ 👋 2023-07-06T22:32:29Z @ is goryon not in the google app store? 2023-07-09T12:44:29Z (#o2664qa) Why not just always use the second one? 2023-07-09T12:51:00Z (#o2664qa) You can have Error return just "permission not allowed" if the array is empty. It would print the same as the first. 2023-07-11T04:38:32Z (#o2664qa) @ do you need to have an explicit Is function? I believe errors.Is has reflect lite and can do the type infer for you. The Is is only really needed if you have a dynamic type. Or are matching a set of types as a single error maybe? The only required one would be Unwrap if your error contained some other base type so that Is/As can reach them in the stack. 


As is perfect for your array type because it asserts the matching type out the wrap stack and populates the type for evaluating its contents. 2023-07-11T04:57:21Z (#o2664qa) So you would have: 
```
type ErrPermissionNotAllowed []Permission
func (perms ErrPermissionNotAllowed) Is(permission Permission) bool {
 for _, p := range perms {
 if p == permission { return true }
 }
 return false
}
var err error = errPermissionNotAllowed{"is-noob"}

if errors.Is(err, ErrPermissionNotAllowed{}) { ... } // user is not allowed

var e ErrPermissionNotAllowed
if errors.As(err, e) && e.Is("a-noob") { ... } // user is not allowed because they are a noob. 
``` 2023-07-11T05:06:58Z (#o2664qa) I suppose to lesson confusion I would rename `Is` to `Because` 2023-07-11T13:55:49Z (#ivgmfba) @ I have a script for tmux that sets up a new if needed among other things. 

 http://github.com/brandur/tmux-extra

Works great with powerline. 2023-07-12T23:19:39Z (#khu32eq) @ does fail2ban work with ipv6 yet? 2023-07-13T23:52:33Z (#ccnlcjq) My home ISP has had a few prefixes allocated. They haven't rolled of out yet because their custom CRM system needs to be updated to be able to allocate/bill for it. Along other reasons they gave when I asked last. 2023-07-13T23:54:27Z (#ccnlcjq) @ my last experience with it was with a Debian package which is known for being out of date :-D 2023-07-14T19:37:03Z (#ooubl4a) @ @ neat.. I saw this one quite a while ago. it is strictly line of sight and blocked by walls or things. The use cases were to have it integrated in the lights in a room and provide super fast connections to devices in an office or coffee shop. 

 2023-07-22T19:55:28Z (#sx5saba) @ excellent work on embedding the YO in Hello 2023-08-04T02:38:14Z (#q77jxqa) @ laughs.. I'm in danger. ![](https://txt.sour.is/media/ED7iBY8TLU3aziZbyz4dJC.png) 2023-08-06T22:01:31Z (#aqahq5a) @ was this in reply to a different thread? Or maybe a hash collision? 2023-08-06T22:08:57Z (#npwwihq) @ that is soo much traffic. I don't think I have ever broken 1TB /mo across my VMS ever. 2023-08-08T03:33:47Z (#npwwihq) I need to get influxdb up on my router. But I do about .5TB per week. So seems pretty on par to you with all that streaming the family does. 2023-08-08T13:42:00Z (#pzxw5la) Woh.. never heard of it. Growing up it was always just the MS EDIT.EXE or for more advanced stuff Nortons editor. 2023-08-16T01:25:54Z (#lpjlrqq) How much CPU you got in the server farm? I thought you had a whole rack. 2023-08-16T01:34:28Z (#lpjlrqq) I picked up a tiny nuc a bit ago with 64G ram and 16 ryzen cores. 2023-08-31T03:12:06Z ![](https://txt.sour.is/media/bEe4TtcF78ivhiWE54BATb.png 'Super Moon') 2023-08-31T03:14:19Z (#eimjtpa) @ the true 7 bit ascii 2023-09-03T17:45:25Z (#ij6gpnq) @ yah we had a clear day and lucked out. 2023-09-03T17:53:25Z (#ij6gpnq) @ took with my phones 10x zoom 2023-09-11T03:34:24Z (#iwv6bea) I like FIDO2 as a replacement for passwords. But you gotta keep track of the little dongle 2023-09-15T05:36:26Z (#kaqu72a) @ I had a peering to NNTP back in the day. That would be neat to setup. 2023-10-07T10:07:28-06:00 moved my yarn to a new server.. will see if it still has the slow cache issue. 

cc: @ 2023-10-09T00:42:10-06:00 (#ajch7iq) @ what is the maxlen one should keep in mind here? Like say if I was charing the collected works of Shakespeare? Or maybe just a gpg keychain? 2023-10-09T00:45:38-06:00 (#zxmtx4a) @ we need to finally break away from twtxt URLs and embrace `@nick@server` to webfinger lookups. 2023-10-09T00:57:26-06:00 (#qusduaq) @ I find the L2 mode where you have one interface and multiple hosts to be tricky. Its best if you are trying to make a full mesh style. But then all hosts need to be able to see one another. 

I have had more success using point-to-point connections where there are only two ends to each interface. It means you have a ton of interfaces and udp ports. but you can share the host IP across the interfaces. Add to that a simple router proto ala OSPF or RIP and you can navigate around not having a full meshnet. 

I have dozens of localnet wireguard connections and many more connections to others that use bgp for route propagation. 2023-10-09T01:06:02-06:00 (#zk7irna) @ I do similar. Though probably much more simple.. I have CGNAT and use wireguard to VMs to punch through for stuff like HTTP/SSH from external. 

And for SMTP I have smart hosts on the VMs that will store anf forward to my mailbox if the connection goes down. 2023-10-09T01:07:54-06:00 (#pqxvblq) So far it all seems prey snappy. No long pauses when pulling up threads at all. 2023-10-15T21:38:03-06:00 (#u7tepaq) @ that and malformed XML errors were hostile AF to users that came across them. 2023-10-15T21:43:24-06:00 (#egaqyla) I like how you can just toss out partitions and not have to worry about sizing them right. 2023-10-16T10:14:49-06:00 (#augttiq) [jellyfin](https://jellyfin.org/) is also a good alternative with free apps for your phone. 2023-10-17T20:01:59-06:00 (#b7srh4q) @ I have seen these screen shots. But have not yet seen them in actuality. I use ublockOrigin. Maybe it gets these too unlike adblock. 

For android I have revanced.. The only place I get ads is on TV. I haven't found a replacement there. 2023-10-19T05:07:55-06:00 This is some cool development for the go 1.22 standard http mux. Its adding the ability to have path vars and define methods for handlers. Also the errors are quite helpful if you have conflicting paths!

https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/ 2023-10-21T22:12:05-06:00 (#mojeqxq) @ I wish more standardization around distributed issues and PRs within the repo ala [git-bug](https://github.com/MichaelMure/git-bug) was around for this. I see it has added some bridge tooling now. 2023-10-24T10:35:35-06:00 (#msejeka) @ you got some radiation issues? I am guessing this is non ECC rams. 2023-10-24T18:40:59-06:00 (#3my7q5q) @ curious that this feed has a image from a 3rd party domain. 2023-10-25T05:28:55-06:00 (#3my7q5q) Oh. I pulled up the feed and its at eli.li instead of theoatmeal.com 2023-10-29T07:08:23-06:00 Read this interesting retro about discords migration path from Mongo to Cassandra to now ScyllaDB. 

 2023-10-29T22:46:31-06:00 (#nszj3ja) @ in the article they say they have a p99 of 15ms reading historical data. Which is pretty nuts.. Aside from having close to 900TB of SSD... 2023-10-29T22:48:46-06:00 (#nszj3ja) I suppose the p90/p50 would be higher. Right? I never remember which way that funnel goes. 2023-11-02T18:01:02-06:00 (#5mikurq) @ time to write your own browser? Or at least a fork maintained outside the EU? 2023-11-07T19:36:30-07:00 (#wdl5kja) Suuuuure. If someone could run a quantum algorithm on a smart phone that would be novel 2023-11-07T19:42:09-07:00 (#qlcjv5q) Really?? I have not yet seen this warning. Using ublock origin. 2023-11-11T06:19:41-07:00 (#4pg5qqq) I feel for ya. I have used tftp for two things in the past. Copying an image to a Cisco router to flash. And doing a network install because I didn't have a flash drive handy. 2023-11-14T20:56:15-07:00 The AI bubble is now upon us! 

 ![](https://txt.sour.is/media/Gd6Az5Nz3f4MmuBF2QXMud.png) 2023-11-14T21:08:05-07:00 (#cikr4oa) @ predicting weather is literally a step up from the 3 body problem into n-body chaos. AI is just statistics pushed up into chaos. The future of computing is indistinguishable from magical incantations 2023-11-14T21:11:18-07:00 (#peqf4kq) @ are ISPs still injecting code into HTTP in this the year 2023? I remember getting notices that my comcast modem is out of date pushed into websites back a decade ago. 2023-11-16T15:46:52-07:00 So.. Of y'all that had covid. Did you have at the end a night where for no reason your brain amped up to 11 and can't sleep at all? It happened to me last night and my FIL the night before. 

I went to bed at 8 and woke up full on anxiety attack at 12 and could not calm my head until around 7 am. Today has sucked a lot. 2023-11-19T08:54:29-07:00 (#rg3d75q) @ I lasted for a long time.. Not sure where or when it was "got". We had been having a cold go around with the kiddos for about a week when the wife started getting sicker than normal. Did a test and she was positive. We tested the rest of the fam and got nothing. Till about 2 days later and myself and the others were positive. It largely hasn't been too bad a little feaver and stuffy noses. 

But whatever it was that hit a few days ago was horrible. Like whatever switch in my head that goes to sleep mode was shut off. I would lay down and even though I *felt* sleepy, I couldn't actually go to sleep. The anxiety hit soon after and I was just awake with no relief. And it persisted that way for three nights. I got some meds from the clinic that seemed to finally get me to sleep.

Now the morning after I realized for all that time a part of me was missing. I would close my eyes and it would just go dark. No imagination, no pictures, nothing. Normally I can visualize things as I read or think about stuff.. But for the last few days it was just nothing. The waking up to it was quite shocking.

Though its just the first night.. I guess I'll have to see if it persists. 🤞 2023-11-19T09:08:02-07:00 (#56htoea) I remember playing a bunch of Tetris style games with my sister we would find on BBSs back in the day. I remember one that was a hexigon style one where the falling pieces were built of hexigons and you had to have them fall in place. 2023-11-21T08:38:50-07:00 (#qwi3bbq) @ the going theory is that openAI announced a new product that pretty much blew up the project of one of the board members. So that board member got 3 others to vote to fire Sam. 2023-11-21T17:38:00-07:00 (#qwi3bbq) @ the new product was GPTs. A way to create tailored bots for specific use cases. https://openai.com/blog/introducing-gpts (fun fact: I did an internal hackathon where we made something like this for $work onboarding. And I won a prize!)

The competed project is poe which is basically the same idea. Make a AI bot tailored to a specific domain of knowledge. And monitize it. 

The timing fits very well as openAI announced it just a few weeks ago. 2023-11-21T21:24:29-07:00 (#qwi3bbq) @ its not.. There are going to be 1000s of copy cat apps built on AI. And they will all die out when the companies that have the AI platforms copy them. It happened all the time with windows and mac os. And iphone.. Like flashlight and sound recorder apps. 2023-11-23T14:15:20-07:00 (#3x6bsna) @ webmentions are dispatched from here https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/post_handler.go#L160-L169 2023-11-27T12:40:37-07:00 Interesting thing happening over on Xitter. Apparently some of the women in tech accounts are being exposed as being run by men that hire women to pose for images/videos. They would be invited to tech conferences but would always drop out last minute.

 ![](https://txt.sour.is/media/PpKD3cfcu6ctiRwGGjA5Yb.png 'fake women in tech')

Makes me wonder if maybe there is need for a sort of verifiable web of trust is needed where influencers can be proven as authentic by others. This will only get worse as AI generative content gets pushed into our feeds. 2023-11-27T14:47:16-07:00 Neat.. Gitea cloud for a hosted alternative to github and gitlab. 

 ![](https://txt.sour.is/media/UL5x5CNswLJihUqD2UQDaA.png) 2023-11-28T12:04:07-07:00 (#gr4eqoa) @ I long ago moved my evernote content to joplin. 2023-11-28T22:36:02-07:00 (#etyv64q) @ you must not have any friends with plex shares. I got one. ![](https://txt.sour.is/media/2otWEE5Mnz8J49BTjgew2a.png) 2023-12-01T15:04:31-07:00 If anyone is doing advent of code this year i created a private leader board for twtxters! 3463928-93bf7cfa 2023-12-01T17:16:08-07:00 (#vihafxq) @ oh snap! 2023-12-02T18:15:07-07:00 (#mldneoa) Oof. Its quite everywhere here in my area. Hope its not too bad there. 2023-12-02T18:17:09-07:00 (#wg7xx5q) Day 2 used lots of Cut and Split. 2023-12-02T18:31:25-07:00 (#6oq4ywq) My code is here. https://git.sour.is/xuu/advent-of-code-2023 2023-12-03T10:48:31-07:00 (#qwm7hha) @ Dang. Really going overboard with this!

@ I didn't have to do much backtracking. I parsed into an AST-ish table and then just needed some lookups. 

The part 2 was pretty easy to work into the AST after. 

https://git.sour.is/xuu/advent-of-code-2023/commit/c894853cbd08d5e5733dfa14f22b249d0fb7b06c 2023-12-03T11:51:42-07:00 (#msw64qq) @ haha! I'm sure they had fun working around stuff like `nineight` 2023-12-03T11:53:43-07:00 (#6oq4ywq) I could have made my search smarter using a prefix search rather than scanning the full buffer for each iteration. 2023-12-03T12:39:19-07:00 (#msw64qq) Ahh I see how someone did it. 

https://github.com/immannino/advent-of-go/blob/master/cmd/2023.go#L30-L40 2023-12-03T16:44:08-07:00 This day one advantage of code was pretty neat looking. 

https://twitter.com/gereleth/status/1730495736070938786?s=09

Code here: https://github.com/gereleth/aoc_python/blob/main/src/year2023/day01vis.py 2023-12-03T17:14:58-07:00 (#sphxweq) @ if you do see this.. Welcome back! 👋🏼 2023-12-04T21:49:31-07:00 (#txfbuaq) @ I have many fond memories of Turbo pascal and Turbo C(++). They really did have a great help system. And debug tools! Its rare for language docs to be as approachable. QBasic was great. As was PHP docs when I first came into web. 2023-12-04T22:17:58-07:00 How did so many get the first star within the first 3 mins? ![](https://txt.sour.is/media/Z3VQfM32x3fPzbaZrN2Q8j.png) 2023-12-05T13:14:01-07:00 (#hq3foyq) @ It took a little over a minute on my machine.. i should try to make it multi threaded.. 🤔

```
Executed in 68.96 secs fish external
 usr time 60.84 secs 242.00 micros 60.84 secs
 sys time 12.52 secs 252.00 micros 12.52 secs
``` 2023-12-05T14:25:57-07:00 (#zktowyq) took a few attempts.. but i managed to do it in half the time!

![](https://img.sour.is/i/qgsI7pEes1ikI3O_tSe4K5nW3X4)

![](https://img.sour.is/i/INAcc0-uDLx02ZLgB1jblRW0W58) 2023-12-05T21:59:20-07:00 (#zktowyq) [All brute force.](https://git.sour.is/xuu/advent-of-code-2023/src/branch/main/day05/main.go)

Its the latest ryzen 7 chipset for laptop/mini form factor. 

I am very surprised about the times others are getting. I guess that's the difference between interpreted and compiled showing. 2023-12-05T22:23:58-07:00 (#u3exsfa) The word forms is part two. In this one you want to find the first digit and last digit. Think searching '1' - '9' 2023-12-05T23:38:24-07:00 So today's #adventofcode was solved with no programming. Just a bit o maths and wolfram/alpha 2023-12-05T23:49:47-07:00 (#y7edboa) @ it shouldn't need a full bignum implementation right? Just some left and right shifts for the sq/sqrt and carry for the addition right? 2023-12-05T23:54:00-07:00 (#y7edboa) Oh.. Right. Need subtract and divide too for the binomial 2023-12-06T00:18:13-07:00 (#irslaoq) @ day 6 is super easy if you have int64 and some binomial theory. Skip ahead for the easy stars and catch up! 2023-12-06T20:03:04-07:00 I have been really impressed with the cool visualizations in pygame that [@gereleth](https://twitter.com/gereleth?s=09) over on Twitter has been making. #AdventOfCode 2023-12-08T15:18:31-07:00 With the global ordering for our private leader board we are all 1st place winners!! 

 ![](https://txt.sour.is/media/ZvHZbwSVZZphP635vR77AK.png) 2023-12-08T15:24:42-07:00 (#ptbe4xa) Around and around you go. When we sync up? Nobody knows! 2023-12-09T14:33:18-07:00 (#ricdxsa) @ I wish they just muted them out instead of making it an awfully loud meep sound. 2023-12-11T12:45:12-07:00 In the holiday spirit i have donned my Santa hat. (shamelessly stolen from @) 2023-12-14T10:59:15-07:00 (#aei4fea) @ tossing around inline ASM for the AoC.. 2023-12-15T12:16:25-07:00 (#hfvdvnq) @ you are probably right.. there seems to be a final 10 trend found over on Reddit.

 ![](https://txt.sour.is/media/DpTgvfDbpJrGWzAHf9SqAG.png) 2023-12-17T09:07:41-07:00 (#5czdftq) @ so the pathfinding puzzle has arrived? 2023-12-19T21:48:34-07:00 Spent some time getting my air sensors tied together into a dashboard. :-D ![](https://txt.sour.is/media/GR8WD8KhaKNTdkS4okw4oh.png) 2023-12-21T16:48:34-07:00 (#yjtftba) @ So.. i eventually made it to the end on this one.. was able to reuse code from days 8 and 9!

SSBzdGlsbCBkbyBub3QgdW5kZXJzdGFuZCB3aHkgdXNpbmcgdGhlIHJhdGUgb2YgY2hhbmdlIGlu
IHRoZSBwdXNoZXMgZ2l2ZXMgbWUgdGhlIGFuc3dlci4uIGJ1dCB5ZWFoLi4K

https://git.sour.is/xuu/advent-of-code/pulls/13/files 2023-12-23T08:15:59-07:00 (#g4fluea) My linux installs all have TPM enabled. ... 2023-12-27T11:41:43-07:00 I found these write-ups for advent of code. They are quite well done and a great learning resouce for algorithms! 

https://advent-of-code.xavd.id/writeups/2023/ 2023-12-30T12:32:55-07:00 (#bvpczda) @ I think there is a problem related to the fitting around a corner that is unsolved. I watched a video about it a little while back. 

[Moving sofa problem](https://en.wikipedia.org/wiki/Moving_sofa_problem) 2023-12-30T12:38:02-07:00 (#qqietra) I have been doing interview prep for next year. The problems have been great to get practice and make it fun when compared to the dry solve this you get on hacker rank or code scene. 

That and so many great write-ups to explain the problems. 2024-01-01T10:03:29-07:00 man... day17 has been a struggle for me.. i have managed to implement A* but the solve still takes about 2 minutes for me.. not sure how some are able to get it under 10 seconds. 

Solution: 
A* PathFind: 

some seem to simplify the seen check to only be horizontal/vertical instead of each direction.. but it doesn't give me the right answer 2024-01-02T17:50:04-07:00 (#ad2gcia) i am wondering if maybe i need a better heap like a btree backed one instead of just list sort on Dequeue.

I found a bug where i didnt include an open/closed list that seemed to shave off a little. right now it runs in about 70 seconds on my machine.. it takes over the 300s limit when it runs on the testrunner on the same box.. docker must be restricting resources for it.

I might come back to it after i work through improving my code for day 23. Its similar but looking for the longest path instead of shortest. 2024-01-02T20:58:01-07:00 (#ad2gcia) OH MY FREAKING HECK. So.. I made [my pather](https://git.sour.is/xuu/advent-of-code/src/branch/main/search.go#L49-L60) able to run as Dijkstra or A* if the interface includes a heuristic.. when i tried without the heuristic it finished faster :|

So now to figure out why its not working right. 2024-01-05T13:04:05-07:00 (#vyp5qoq) @ What I did as a work around for mattermost was hijack the gitlab oauth login with my own auth server. 2024-01-09T13:59:03-07:00 (#zba6dsa) So, I finally got day 17 to under a second on my machine. (in the test runner it takes 10)

I implemented a Fibonacci Heap to replace the priority queue to great success. 

 2024-01-10T15:58:39-07:00 (#uy6vyxq) @ i first learned about it from this vid 

and this site: 2024-01-12T17:16:49-07:00 (#dq5547a) @ I have read the white papers for MLS before. I have put a lot of thought on how to do it with salty/ratchet. Its a very good tech for ensuring multiple devices can be joined to an encrypted chat. But it is bloody complicated to implement. 2024-01-13T20:37:16-07:00 (#dq5547a) @ what? 2024-01-14T10:51:37-07:00 (#dq5547a) @ nope. 2024-01-16T21:15:05-07:00 (#mk7wbbq) :waves: 2024-01-18T12:24:34-07:00 (#mk7wbbq) It would help for UX for sure. emoji keyboards are hard to come by on the desktop. 2024-01-20T19:52:39-07:00 (#hgwe26q) Are they doing fiber to outside with ether in? Or will it make it inside the house? 2024-01-20T19:54:08-07:00 (#qrarrdq) Laser all the way. Inkjets are cheaper to replace the printer than to buy the ink for a reason. 2024-01-21T10:01:35-07:00 (#hgwe26q) When I built I had a blue conduit installed from outside in to the util room. 2024-01-24T18:09:20-07:00 (#73p5qza) What? You are still using chrome? Firefox is where its at. But if you need WebKit there is always chromium which strips out all the google nonsense. 2024-01-31T10:01:54-07:00 (#fytbg6a) @ kinda like the format for markdown images? `![alt](url 'title')` ? 2024-02-01T21:10:19-07:00 (#tjevvyq) @ this is interesting. Is the square bracket something used in the wild for multilingual twts?

@ what are your thoughts? Should we extend the parser to handle [lang=] and [boost] ? Or a generic attribute spec. Single word is a boolean attribute. And one with an `=` is a string key/value. 2024-02-02T10:30:26-07:00 (#tjevvyq) @ this makes sense as a quote twt that references a direct URL. If we go back to how it developed on twitter originally it was `RT @nick: original text` because it contained the original text the twitter algorithm would boost that text into trending.

 i like the format `(#hash) @ > "Quoted text"\nThen a comment`
as it preserves the human read able. and has the hash for linking to the yarn. The comment part could be optional for just boosting the twt. 

The only issue i think i would have would be that that yarn could then become a mess of repeated quotes. Unless the client knows to interpret them as multiple users have reposted/boosted the thread.

The format is also how iphone does reactions to SMS messages with `+number liked: original SMS` 2024-02-02T11:00:41-07:00 (#ads2hkq) @ trying out a boost format.
> Ha, this is cool. Has its flaws, although is easy to remember.
>
> An RNG that runs in your brain
>
> https://www.hillelwayne.com/post/randomness/ 2024-02-02T11:02:54-07:00 (#ads2hkq) @:
> Ha, this is cool. Has its flaws, although is easy to remember.
>
> An RNG that runs in your brain
>
> https://www.hillelwayne.com/post/randomness/

Trying out a boost format. seems better with text after.... 2024-02-02T11:15:30-07:00 (#ads2hkq) #repost @:
>Ha, this is cool. Has its flaws, although is easy to remember.
>
>An RNG that runs in your brain
>
>https://www.hillelwayne.com/post/randomness/ 2024-02-02T11:27:16-07:00 (#ads2hkq) @: [boost] 2024-02-02T11:27:52-07:00 (#3zprf4a) Not a fan of this one because the only context is machine readable. 2024-02-02T14:23:46-07:00 Twtxt spec enhancement proposal thread 🧵

Adding attributes to individual twts similar to adding feed attributes in the heading comments.

https://git.mills.io/yarnsocial/go-lextwt/pulls/17

The basic use case would be for multilingual feeds where there is a default language and some twts will be written a different language. 

As seen in the wild: https://eapl.mx/twtxt.txt


The attributes are formatted as `[key=value]`

They can show up in the twt anywhere it is not enclosed by another element such as `codeblock` or part of a markdown link. 2024-02-02T17:55:32-07:00 @ why am I getting this on your git? ![](https://txt.sour.is/media/t2GsmJnNLvq7P4T9TgavMk.png) 2024-02-03T00:24:58-07:00 (#3hirnea) @ ahhh! Its the dark reader plugin breaking the page. 

https://github.com/go-gitea/gitea/issues/28861 2024-02-03T21:02:43-07:00 (#rbt2otq) @ pretty nothing berger. The "blowout" was pretty tame coming from Linus [kill yourself now. The world will be a better place"](https://www.networkworld.com/article/706908/security-torvalds-to-bad-security-devs-kill-yourself-now.html) Torvold. 

The issue was a dev making a "fix" that didn't have a documented problem. They reused some specific low level functions they did not understand the reason they were made. 2024-02-04T12:25:48-07:00 seen near my house.. ![](https://txt.sour.is/media/EUfn2JaKp4K3rasXM6tpEh.mp4) 2024-02-04T15:07:15-07:00 (#nxkzjiq) @ the location is real. A few in the 'hood mentioned seeing this person directly. They live somewhere on the hillside in the background of the video. 2024-02-04T15:11:01-07:00 (#nxkzjiq) Found some additional context. This was filmed as a 'skit'.. Though still not very safe as there is a slight lag from what is displayed on the visor I have heard. ![](https://txt.sour.is/media/riFnytTt4SkBE6bgi6C8i6.png) 2024-02-06T09:26:21-07:00 (#pfsrija) @ the 24th of June 2002 was a pivotal year in my life. 2024-02-08T11:00:46-07:00 (#nr6f4ja) are these projects you created? 2024-02-08T12:47:00-07:00 (#nr6f4ja) @ its always fun to look back on old projects. I talked to an old coworker about a codebase i made back in 2010 that still has lots of the same architecture i built into it back then and is still in heavy use. 2024-02-11T13:45:23-07:00 (#nxkzjiq) Not even in the valley. This is Silicon Slopes, baby! 2024-02-15T13:46:12-07:00 (#wij4nza) @ @
i think you have to be following the person so it does it correctly. 2024-02-18T09:43:12-07:00 (#rehtvsq) @ NASM is great. I remember playing with it back in my HS days. It has lots of little helps to make assembly more approachable. 2024-02-18T12:44:21-07:00 Go 1.22.0 introduces a new experiment for range functions. Have you tried them out? What do you think it can make easier to accomplish?

 ![](https://txt.sour.is/media/S3Vac56bXabmt2MPcR28xb.png) 2024-02-18T16:28:18-07:00 (#3c2i2ia) The range function can signal when to stop running by returning false from the yield function.
 ![](https://txt.sour.is/media/NweiGuHUJpsJ2qeVreTmki.png) 2024-02-18T16:28:52-07:00 (#3c2i2ia) the function can yield two values to include an index.
 ![](https://txt.sour.is/media/Rfcb6S5fdcGMpC4sar78wU.png) 2024-02-18T17:44:15-07:00 I would love to see a world where ones twtxt feed is defined by webfinger. So `@xuu@txt.sour.is` => https://text.sour.is/user/xuu/twtxt.txt

Then my identity can exist independent of the feed location. And I can host multiple protocol types for my feed. Ie. http/gopher/Gemini/irc DCC/etc 2024-02-19T12:42:46-07:00 (#3c2i2ia) Things can get very interesting when we add the iter.Pull function in the mix. It works like pythons yield from.

 ![](https://txt.sour.is/media/KoaXgW43XHfbFFZugymr9f.png) 2024-02-19T12:44:40-07:00 (#kdrj3yq) @ Yeah the func in func threw me off.. The generic type `iter.Seq[V]` does make things a bit more clear though. 2024-02-19T13:11:51-07:00 (#rehtvsq) @ before this century. Back when colleges taught C++ instead of Java for CS degrees. 2024-02-20T10:43:42-07:00 (#rehtvsq) I finished my data structures classes with C++ and the next year they changed it out with Java. When i transferred up after my assoc degree it was C++ using the counter-strike source game engine. 2024-02-20T13:31:52-07:00 (#r4vadlq) @ pascal was high school for me 10th grade. I remember making an over the top Yahtzee game with text windows and everything. My instructor got mad at me because it was a ton of pages printed out to review. 2024-02-20T19:12:04-07:00 (#jq2xtea) @ bug? @ 2024-02-22T08:43:27-07:00 (#y4lqq2a) @ Haha! yeah sounds about like my HS CS program. A math teacher taught visual basic and pascal. and over on the other end of the school we had "electronics" which was a room next to the auto body class where they had a bunch of random computer parts scavenged from the district decommissioned surplus storage. 

The advanced class would piece together training kits for the basic class to put together. 2024-02-23T20:14:49-07:00 (#yl2illa) how would that work with your encryption keys? you send them to a server that hopefully you control? 2024-02-27T17:13:56-07:00 (#zwpd7hq) @ i made my own :D

I do prefer toml for the old school ini style with added support for object lists.

my second would be hjson or any other json with comments style. 2024-02-28T16:30:11-07:00 (#qfgb2jq) @ Don't forget the syntax for arrays of sets `[[foo.bars]] [[foo.bars]] [[foo.bars]]` 2024-02-28T18:03:50-07:00 (#3syipzq) @ its a hierarchy key value format. I designed it for the network peering tools i use.. I can grant access to different parts of the tree to other users.. kinda like directory permissions. a basic example of the format is: 

```
@namespace
# multi
# line
# comment
root :value

# example space comment
@namespace.name space-tag 

# attribute comments
attribute attr-tag :value for attribute

# attribute with multiple 
# lines of values
foo :bar
 :bin
 :baz

repeated :value1
repeated :value2
```

each `@` starts the definition of a namespace kinda like `[name]` in ini format. It can have comments that show up before. then each attribute is `key :value` and can have their own `#` comment lines. 
Values can be multi line.. and also repeated.. 

the namespaces and values can also have little meta data tags added to them.

 ![](https://txt.sour.is/media/o7WhKGbCy489nhVWRKZTv9.png 'screenshot of my webapp') 

the service can define webhooks/mqtt topics to be notified when the configs are updated. That way it can deploy the changes out when they are updated. 2024-02-28T18:13:14-07:00 (#3syipzq) I can query the configurations a few different ways. i can request the specific name `foo.bar` or a glob like `foo.*` or trace the hierarchy `trace:some.deep.name.space` which will give me the namespaces `some`, `some.deep`, `some.deep.name`, and `some.deep.name.space`. These can be combined. 2024-02-29T10:15:03-07:00 @ 
> You can't catch the kill signal. Should this be syscall.SIGTERM instead of os.Kill, xuu? https://git.sour.is/sour-is/go-paste/src/branch/main/main.go#L21

You are totally right.. i think i was going for SIGTERM and SIGQUIT 2024-02-29T10:19:09-07:00 (#3syipzq) and then i have a compact version that makes things more grep'able in scripts.

 ![](https://txt.sour.is/media/45HTCMNspEKkkqV4tJH2Lf.png) 2024-03-01T19:44:00-07:00 (#7uxy6nq) yarnd does not do auto discovery via webfinger though.. i cant put @username and have it fetch the feed url from webfinger. to fully make feeds portable. would also need to be able to use that for hashing. 2024-03-01T19:44:57-07:00 (#vu7qzxq) well @username@hostname rather... 2024-03-05T18:43:14-07:00 (#iee7bsq) My email is such a cluster of noise. The only time i actually use it is to find out I have to do my security training or something. All communication is slack now days. 2024-03-08T12:59:12-07:00 (#ymrnh2q) @ It is the new "politically correct". Something that was used to describe acting in a more civilized way with one another. Turned into a scapegoat for the other side to label, demonize, and attack. 2024-03-13T15:56:11-06:00 (#uor3zya) @ for me:

- a wall mount 6U rack which has: 
 - 1U patch panel
 - 1U switch 
 - 2U UPS 
 - 1U server, intel atom 4G ram, debian (used to be main. now just has prometheus)
- a mini ryzon 16 core 64G ram, fedora (new main)
 - multiple docker services hosted. 
- synology nas with 4 2TB drives
- turris omnia WRT router -> fiber uplink

network is a mix of wireguard, zerotier. 
 - wireguard to my external vms hosted in various global regions.
 - this allows me ingress since my ISP has me behind CG-NAT
 - zerotier is more for devices for transparent vpn into my network 

i use ssh and remote desktop to get in and about. typically via zerotier vpn. I have one of my VMs with ssh on a backup port for break glass to get back into the network if needed.

everything has ipv6 though my ISP does not provide it. I have to tunnel it in from my VMs. 2024-03-14T11:03:44-06:00 (#3clq7eq) @ its hosted on the mini at home and ingress is handled through my MTR vm. 2024-03-16T12:41:30-06:00 (#qfge7za) Joplin + [Caddy](https://caddyserver.com/) [WebDAV](https://github.com/mholt/caddy-webdav) over here. 2024-03-17T11:27:35-06:00 (#dzyx34a) UDF is where its at. Not some silly red or blue book that cant even have more than 8+3 filenames! 2024-03-17T11:41:55-06:00 (#viwbypq) yup! just need to add the webdav extension and configure it up a path and user/pass. caddy handles everything else. 2024-03-17T11:44:24-06:00 (#viwbypq) ```
https://dav.sour.is {
 tls jon@xuu.cc

 basicauth /xuu {
 xuu $2a$...
 }

 webdav * {
 root /var/www/dav
 }
}
``` 2024-03-17T11:45:10-06:00 (#viwbypq) password is generated using `caddy hash-password` 2024-03-17T11:51:11-06:00 (#viwbypq) and you can even mount it on windows/linux/os x!

 ![](https://txt.sour.is/media/eFZEzjerK5BE9gVUGawTpb.png) 2024-03-17T11:52:13-06:00 (#e4q7sgq) @ 2024-03-17T19:46:30-06:00 (#viwbypq) its a notebook tool like evernote. @ linked it above: https://joplinapp.org/ 2024-03-18T12:42:25-06:00 (#viwbypq) it is an addon in the download tool. Or you can use xcaddy to build it in. 

 ![](https://txt.sour.is/media/86RcL2zqaLSC4KBGwuvhfj.png) 2024-03-22T09:45:21-06:00 (#hnjfvrq) in the matter of political voice in the US money is speech and therefore companies use their "free speech" to donate and gain access to politicians. Therefore companies are people. Thanks a lot "citizens united"

https://www.brennancenter.org/our-work/research-reports/citizens-united-explained?ref=foreverwars.ghost.io