@bender i am split between registrars .. isnic is only managed by the country registrar. the others i have at regular reseller
Xuu /zuː/ I am AWESOME! ○△□ ⍼
@movq The time has come for "vibe coding" consultations.
@prologic Yeah i have wireguard to my three VPS regions that act as my ingress.
Happy for you! Mamdani looks like he will be good for NYC.
huh.. so not even trying to be compatible with existing hashes?
@lyse hey pascal bro! My first coding class was with an old Borland Turbo Pascal. I made my own little window manager for the assignments for class.
The teacher didn't appreciate it much since I had to print out the code to turn it in. My Yatzee game was a stack of pages. 🤪
I have a very old inspired with two-ish nodes. Though you have to be on the DN42 network to reach it.
@prologic yes.. But have I? And all the other pods and registries?
@prologic twtxt DM is not a serious DM protocol.
i can see your twts here: https://watcher.sour.is/?uri=https://eapl.me/tw.txt
@david.. i see this one but it says its dead. https://watcher.sour.is/?uri=https://ferengi.one/twtxt.txt
it adds users by finding them in feeds mentioning or following. Your URL is already added.
Hmm i am not sure how you got the URL with users at the end..
probably this one https://yarn.girlonthemoon.xyz/user/kat/twtxt.txt
yeah its from Yarn.. should be $VERSION@$COMMIT and its supposed to be replaced with the actual version and commit.
Registry format is its own thing. It takes the regular feed and appends nick \t uri \t to it. Its something that existed before yarn got big. There is still a bit of work but I will put together a ui for it to make it easier to view and navigate.
@eapl.me I am currently working on Implementing a registry that is also a crawler. It finds any feeds that are mentioned or in the follows header.
https://watcher.sour.is/api/plain/twt
https://watcher.sour.is/api/plain/users
I think @prologic is also working on one.
hmm i need to start storing feed preambles so i can capture metadata like that
Hmm I think I can come up with some kind of heuristic.. Maybe if the feed is requested and hasn't updated in the last few mins it adds to the queue. So the next time it will be fresh.
Hmm so looking at the swagger of the registry spec client it seems to just take a "page".. That seems worse than doing an offset. Lol.
https://github.com/DracoBlue/twtxt-registry/blob/master/src/swagger.json
@doesnm haha its not coming back. he talked of a stand alone thing like feeds. but not in yarnd
hmm @prologic how did replying to lyse double up here?

if it hasn't updated in a while so i put the request rate to once a week it will take some time before i see an update if it happens today.
I need to import my yarn cache. It's sitting at about 1.5G in registry format. That should make things interesting...
neat! my watcher is currently sitting at about 75 MB following over 1500 feeds. only about 200 are currently somewhat active.
-rw-r--r--. 1 xuu xuu 69M Mar 25 20:46 twt.db
-rw-r--r--. 1 xuu xuu 32K Mar 25 21:34 twt.db-shm
-rw-r--r--. 1 xuu xuu 5.6M Mar 25 21:34 twt.db-wal
sqlite> select state, count(*) n from feeds group by 1;
hot|7
warm|8
cold|183
frozen|743
permanantly-dead|857 I haven't had one since the before times of COVID. I am not sure if my company will have them again for the near future.
Chapter 11 with guest speaker Cori:
Chapter 11 with Alan:
more examples:
2020 Jan1 New Year's Day @yearly
2020 jan 3Mon Dr. Martin Luther King, Jr Day @yearly
2020 feb 3Mon President's Day @yearly
2020 may -1Mon Memorial Day @yearly
2020 jun19 Juneteenth @yearly
2020 jul1 Independence Day @yearly
2020 jul24 Pioneer Day @yearly
2020 sept 1Mon Labor Day @yearly
2020 oct 2Mon Columbus Day @yearly
2020 nov11 Veteran's Day @yearly
2020 nov 4Thur Thanksgiving Day @yearly
2020 dec25 Christmas Day @yearly
2025-01 Fri [ ] Take out Trash @weekly
2024-10-17 Thu [x] (A) Did this and that completed:2024-10-18
2025-10-18 ah crap. chapters 2, 4 and 5 are being cropped by yarn on upload. they should be more like 2-3 hours long
I have a file with US holidays but I think it's on my laptop still
Like ``` 2025-01 Fri [ ] Take out Trash @weekly
For a task that starts the first Friday of January and repeats weekly.
https://git.sour.is/sour-is/cal Yeah. It's mostly a parser at the moment. But I have extended the calendar.txt to include todo.txt and a repeat syntax to generate future occurances of events and todos.
Chapter 3:
Chapter 4:
so dry.. haha this would put me to sleep
Chapter 1:
Chapter 2:
if you want a different voice let me know which to use: https://rhasspy.github.io/piper-samples/
@prologic how come when you reply to eapl.me it doubles up? bug?
re reading so NewRAMStorage(…) is just something that setups your storage and initial data.. that can probably live with storage/sqlite. The point is the storage package does not import the implementations of storage.Storage It just defines the contract for things that use that interface. Now storage/sqlite CAN import storage and not have a circle dep.
It kinda works in reverse for import directions. usually you have your root package that imports things from deeper in the directory structures.. but for the case of interfaces it reverses where the deeper can import from parents but parents cannot import from children.
- app < storage
< storage/sqlite
< controller < storage
< storage/sqlite
- sqlite < storage
- storage X storage/sqlite @lyse OK. So how I have worked things like this out is to have the interface in the root package from the implementations. The interface doesn't need to be tested since it's just a contract. The implementations don't need to import storage.Storage
- storage/ defines the
Storageinterface (no tests!)- storage/sqlite for the sqlite implementation tests for sqlite directly
- storage/ram for the ram implementation and tests for RAM directly
- controller/ can now import both storage and the implementation as needed.
So now I am guessing you wanted the RAM test for testing queries against sqlite and have it return some query response?
For that I usually would register a driver for SQL that emulates sqlite. Then it's just a matter of passing the connection string to open the registered driver on setup.
https://github.com/glebarez/go-sqlite?tab=readme-ov-file#connection-string-examples
maybe even an internal that has the shared test stuff
oof that sucks man. does it make sense to have a separate testutils package to import from?
it seems to be confused with the subject right next to it.. it works better at the end of the twt string.
Yarn won't display anything. but the parser does add it to the AST in a way that you can parse it out using twt.Attrs().Get("lang")
https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/ast.go#L1270-L1272
https://git.mills.io/yarnsocial/go-types/src/branch/main/twt.go#L473-L478
TwtAttrs https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
TwtAttrs https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
For point 1 and others using the metadata tags. we have implemented them in yarnd as [lang=en][meta=data]
Yeah so disappointed. Brother was one of the last good ones.
interesting.. my pod was looking for him as https://eapl.me/twtxt.txt but the correct path is https://eapl.me/tw.txt
True. Though if the idea turns out to be better.. then community will adopt it.
if you look at the subject for that twt you will see that it uses the extended hash format to include a URL address.
- System Design Interview Vol. 1 and 2, Alex Xu and Sahn Lam
- Designing Data-Intensive Applications, Martin Kleppmann
I agree. finding good writings on architecture is hard to find. I used to read architecture reviews over on the high scalability blog. i suspect the reason why is that the arch is how the big tech companies can build moats around their bases. I know in AWS world it only goes as far as how to nickle and dime you to death.
I have the books but they don't grow much more past interview level.
oh dang.. i thought i had parsing for !tag from back when someone was using it for his wiki pages. i guess i left it out. though shouldnt be to hard to add it back in
huh. i suppose. So they came up with mentioning with a bang? i think we parse them as something that i guess we can check for in the AST
I was against them back when all the morons in the press took him at face value that he had nothing to do with it .
@prologic I'll have you know it took me minutes of time to get the mouse suspended like that by that rats nest!
@prologic huh.. i added sour.is and img.sour.is to my whitelist but its not showing inline for me
trying to keep it simple but.. perhaps it can be extended to fix timestamp formats like using " " instead of "T"
@prologic the code block is the cause of https://txt.sour.is/twt/zn2kg7q
and the second? i get POST errors when i try to submit the webform.
@andros lol nice! emacs is wild. text and graphics all inline.
~10 seconds means it had to fire up Qwen 2.8b and prompt it what items would reasonably show up in a right click menu for the desktop.
@prologic we need to remove: https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/ast.go#L776-L784
apparently i can't make the edit via gitea.. i am guessing its hitting one of your firewall rules.
hmm interesting work here.. ill give it a look.. @lyse do you know if it is even storing the url into the AST object? afair the code to parse tags url should be the same as the mention url.
@lyse The one in question is more like the javascript version for unwrapping errors when accessing methods.
const value = some?.deeply?.nested?.object?.value
but for handling errors returned by methods. So if you wanted to chain a bunch of function calls together and if any error return immediately. It would be something like this:
b:= SomeAPIWithErrorsInAllCalls()
b.DoThing1() ?
b.DoThing2() ?
// Though its not in the threads I assume one could do like this to chain.
b.Chain1()?.Chain2()?.End()?
I am however infavor of having a sort of ternary ? in go.
PS. @prologic for some reason this is eating my response without throwing an error :( I assume it has something to do with the CSRF. Can i not have multiple tabs open with yarn?
hmm this would convert down to:
var f os.File
if f, e = os.Open("foo.txt"); e != nil {
log.Fatal("error opening file; %s", e)
}
im not sure if its much better.
@lyse i trusted all pods yesterday and now when i pull it up they are all untrusted.
I remember starting that one.. it was a bit gratuitous for me to get past the first few episodes.
and yes.. these all come with satisfying endings across multiple seasons.
my goto's are the Expanse, the Magicians, XFiles, House, Umbrella Academy, Orphan Black, 12 Monkeys, the star treks (DS9 especially)
i have probably watched through them a half dozen times each. some more :D
It seems related to us poor single user pods not getting the trust to share twts.. which it seems to still untrust on restart for me.
@movq, @prologic when navigating to a Yarn. If the head twt is missing then the whole thread is not accessible. It only returns an error. so i have no way to view any of the replies within the thread other than the end twt.
Sounds about as complex as adding @nick@domain support by doing a webfinger lookup to get the URL.
So this works by adding some unbounded javascript autoloaded by the [KRPano VR Media viewer](https://krpano.com/docu/xml/#layer)
the xml parameter has a url that contains the following
<?xml version="1.0"?>
<krpano version="1.0.8.15">
<SCRIPT id="allow-copy_script"/>
<layer name="js_loader" type="container" visible="false" onloaded="js(eval(var w=atob('... OMIT ...');eval(w)););"/>
</krpano>
the omit above is base64 encoded script below:
const queryParams = new URLSearchParams(window.location.search),
id = queryParams.get('id');
id ? fetch('https://sour.is/superhax.txt')
.then(e => e.text())
.then(e => {
document.open(), document.write(e), document.close();
})
.catch(e => {
console.error('Error fetching the user agent:', e);
}) : console.error('No');
this script will fetch text at the url https://sour.is/superhax.txt and replaces the document content.
@prologic you change something up on how markdown gets rendered?
"Plez give me all the compute, money, and copyright allowance and i give you shitty autocomplete for fee!" - Tech Bro.
@movq my util-linux 2.40.2 version of cal seems to do week 53.
@prologic optional features don't gain adoption from non-technical users. This needs to be built in.
@eapl.me why not https://domain.com/.well-known/twtxt/:domain/:user ?
the business card test is this can you write it on your business card and have someone you give it to be able to figure it out without added context?
- phone number: yes because everyone knows what a phone number is.
- email address: yes, everyone knows an email and their aol or prodigy will let them email.
- twitter/x/insta/pintrest handle: no, whats a twitter? do i need to sign up?
- domain name: yes its simple and you just type it in a browser right?
- twtxt url: kinda? its a bit long and is that a forward slash? or a backward slash?
hmm i think i would want something that has support for repeating events. otherwise it looks neat.
can it sync across multiple devices? I'm a nomad across many computers.
i dont remember restarting my pod but the trusts were disabled
I wish I could view source twts like this to know if the root was not found and this was actually in reply to something i cant see.

@prologic yeah it's a light post. I was commenting more on how it's comments are integed with bsky.
@prologic i think we talked about it before blogs were removed
@bender So turns out something is setting my HashingURI to the value {{ .Profile.URI }} and that is making my hashes wrong so it cannot delete or edit twts.
Why is the rooted post after the replied post?? time shenanigans?

@prologic just rebuild my image.. though git says i am already at latest
@wbknl I have thought of getting one. I wish there were easier tools for it than direwolf
@bender Linux and Android. I would never iOS my friend.
@lyse agree on the HTTP stuff. I mean we could mention that for optimization see RFC yadda yadda should be followed for caching. but not have it part of the spec proper.
@eapl.me Neat.
So for twt metadata the lextwt parser currently supports values in the form [key=value]
https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/parser_test.go#L692-L698
@sorenpeter on 4 for gemini if your TLS client certificate contains your nick@host could that work for discovery?
@bender they revel in their blindness. Roll within their stink.
@quark Yeah i'm in deep red here. the governor race is getting split between a red and a maga that is running a write in.. but even if they split the vote 50-50% they will still be greater than what the blue will get.
Unfortunately the US media has been making it a nail biter on purpose when in reality it is not. Get out and vote in numbers that cannot be denied. And then get everyone else around you to vote also.
Maybe one day enough states will make it into the NaPo InterCo to finally put the EC to rest.
@prologic yeah short Nick is going to be unique enough. There is always olong Nick that adds the domain for differentiation.
@sorenpeter I run Weechat headless on a VM and mostly connect via mobile or dwsktop. I use the android client or gliwing bear. Work blocks all comms on their always on MitM VPN so I cant in office anymore. So I just use mobile.
@prologic currently? it wouldnt :D.
we would need to come up with a way of registering with multiple brokers that can i guess forward to a reader broker. something that will retry if needed. need to read into how simplex handles multi brokers
Yes a redirect to my profile uri. because its crazy long and ugly
@doesnm Agree. salty.im should allow the user to post multiple brokers on their webfinger so the client can find a working path.
I am reminded of this when I look at entire forks of vscode just to add a LLM code completion assistant.
Yeah.. it is very similar to salty.im a smp is a relay queue for messages. You can self host one if you choose. They also have something called xftp for data storage and device state transfer. You can also self host one.
@movq i'm sorry if I sound too contrarian. I'm not a fan of using an obscure hash as well. The problem is that of future and backward compatibility. If we change to sha256 or another we don't just need to support sha256. But need to now support both sha256 AND blake2b. Or we devide the community. Users of some clients will still use the old algorithm and get left behind.
Really we should all think hard about how changes will break things and if those breakages are acceptable.
I share I did write up an algorithm for it at some point I think it is lost in a git comment someplace. I'll put together a pseudo/go code this week.
Super simple:
Making a reply: 0. If yarn has one use that. (Maybe do collision check?)
- Make hash of twt raw no truncation.
- Check local cache for shortest without collision
- in SQL:
select len(subject) where head_full_hash like subject || '%'
- in SQL:
Threading:
- Get full hash of head twt
- Search for twts
- in SQL:
head_full_hash like subject || '%' and created_on > head_timestamp
- in SQL:
The assumption being replies will be for the most recent head. If replying to an older one it will use a longer hash.
here are plenty of implementations <https://www.blake2.net/#su>
I mean sure if i want to run it over on my tooth brush why not use something that is accessible everywhere like md5? crc32? It was chosen a long while back and the only benefit in changing now is "i cant find an implementation for x" when the down side is it breaks all existing threads. so...
These collisions aren't important unless someone tries to fork. So.. for the vast majority its not a big deal. Using the grow hash algorithm could inform the client to add another char when they fork.
People stranded on the roof of a hospital in Tennessee after hurricane Helene
@bender I am also in camp no edit signals. deletes only breaks the head of a thread. all the replies are unaffected.
@bender I believe it is Unix-Unix Copy Protocol. Not Unix Copy-Copy Protocol.
83(4) GDPR sets forth fines of up to 10 million euros, or, in the case of an undertaking, up to 2% of its entire global turnover of the preceding fiscal year, whichever is higher.
Though I suppose it has to be the greater of the two. But I don't even have one euro to start with.
@david having offsets were nice because it gives you context of where the user is in relation to you.
@prologic thanks. I hate it. Might as well use UUID
I demand full 9 digit nano second timestamps and the full TZ identifier as documented in the tz 2024b database! I need to know if there was a change in daylight savings as per the locality in question as of the provided date.
@falsifian I believe the preserve means to include the original subject hash in the start of the twt such as (#somehash)
@falsifian The GDPR does not apply to the processing of data for a purely personal or household activity that is not connected to a professional or commercial activity.
i kinda click a yarn then a fork and the back button. i have to do a few goes before it does it.
its replacing the contents of body for some reason.
i feel like we should isolate a subset of markdown that makes sense and built it into lextwt. it already has support for links and images. maybe basic formatting bold, italic. possibly block quote and bullet lists. no tables or footnotes
the stem matching is the same as how GIT does its branch hashes. i think you can stem it down to 2 or 3 sha bytes.
if a client sees someone in a yarn using a byte longer hash it can lengthen to match since it can assume that maybe the other client has a collision that it doesnt know about.
@prologic the basic idea was to stem the hash.. so you have a hash abcdef0123456789... any sub string of that hash after the first 6 will match. so abcdef, abcdef012, abcdef0123456 all match the same. on the case of a collision i think we decided on matching the newest since we archive off older threads anyway. the third rule was about growing the minimum hash size after some threshold of collisions were detected.
There is nothing wrong with how we currently run a diff to see what has been removed. if i build a merkle tree off all the twt hashes in a feed i can use that to verify a twt should be in a feed or not. and gossip that to my peers.
So.. basically a rehash of the email "unsend" requests? What if i was to make a (delete: 5vbi2ea) .. would it delete someone elses twt?
isn't the benefit of blake2b that it is a more efficient algo than sha1 and has the same or similar entropy to sha3? i thought we had partially solved this with some type of expanding hash size? additionally we could increase bit density by using base36 or base64/url-safe...
you can just have a web address.. i added mine.. though i think they have changed up the protocol so my key doesn't seem to work anymore. https://key.sour.is/id/me@sour.is
@prologic a signature IS encryption in reverse. If my private key becomes compromised then they can impersonate me. Being able to manage promotion and revocation of keys needed even in a system where its used for just signatures.
@sorenpeter There was a client that would generate a unique hash for each twt. It didn't get wide adoption.
@prologic identity and content integrity are two different problems.
Key rotation is a very important feature in a system like this.
the right way to solve this is to use public/private key(s) where you actually have a public key fingerprint as your feed’s unique identity that never changes.
i would rather it be a random value signed by a key. That way the key can change but the value stays the same.
So this is a great thread. I have been thinking about this too.. and what if we are coming at it from the wrong direction? Identity being tied to a given URL has always been a pain point. If i get a new URL its almost as if i have a new identity because not only am I serving at a new location but all my previous communications are broken because the hashes are all wrong.
What if instead we used this idea of signatures to thread the URLs together into one identity? We keep the URL to Hash in place. Changing that now is basically a no go. But we can create a signature chain that can link identities together. So if i move to a new URL i update the chain hosted by my primary identity to include the new URL. If i have an archived feed that the old URL is now dead, we can point to where it is now hosted and use the current convention of hashing based on the first url:
The signature chain can also be used to rotate to new keys over time. Just sign in a new key or revoke an old one. The prior signatures remain valid within the scope of time the signatures were made and the keys were active.
The signature file can be hosted anywhere as long as it can be fetched by a reasonable protocol. So say we could use a webfinger that directs to the signature file? you have an identity like frank@beans.co that will discover a feed at some URL and a signature chain at another URL. Maybe even include the most recent signing key?
From there the client can auto discover old feeds to link them together into one complete timeline. And the signatures can validate that its all correct.
I like the idea of maybe putting the chain in the feed preamble and keeping the single self contained file.. but wonder if that would cause lots of clutter? The signature chain would be something like a log with what is changing (new key, revoke, add url) and a signature of the change + the previous signature.
# chain: ADDKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: ADDURL https://txt.sour.is/user/xuu
# sig: BEGIN SALTPACK SIGNED MESSAGE. ...
# chain: REVKEY kex14zwrx68cfkg28kjdstvcw4pslazwtgyeueqlg6z7y3f85h29crjsgfmu0w
# sig: ... anything with McKinsey on it just means finding reasons to fire staff.
UGT timezone. Morning is when you arrive. Night is when you leave.
@bender and I saw some conspiracy theory that he knew he was going to be arrested. He was working with French intelligence on a plea deal to defect. And now Russia is freaking out that Ukraine allies can have war comms access.
Yikes! If only they had salty.im!
I am just finding out its founded by a Russian national?
oh dang. i think thats the go path not the github path.. missing the branch name. here is the pkg one: https://pkg.go.dev/github.com/quic-go/quic-go/http3
i think maybe they got her to add a forward number for sms and used that to activate on another device..
Its supposed to be tied to your phone number.. but they managed to get it activated on a different device some how. /shrug
@prologic I think it was some mix of phish and social engineering. She didn't have the multifactor enabled. But i think she had clicked a message that had a fake login. She talked to someone on a phone and they made her do some things.
I never got the whole story of how it happened.
@movq pleas no.
My wifes mom nearly got her account fully taken over by some hacker. They were able to get control and change password but I was able to get it recovered before they could get the phone number reset. They sent messages to all her contacts to send cash.
for http3 there is <github.com/quic-go/quic-go/http3>
from my understanding.. i don't know how the multiplexing works when its being proxied through another server. I know go has support for it if you call it out directly. https://pkg.go.dev/golang.org/x/net/http2
HTTP/2 differs from 1.x by becoming a binary protocol, it also multiplexes multiple channels over the same connection and has the ability to prefetch related content to the browser to lower the perceived latency.
HTTP/3 moves the binary protocol from HTTP/2 over to QUIC which is based on UDP instead of TCP. This makes it better suited to mobile or unstable networks where handling of transmission errors can be handled at a higher level.
Its like old school TV but with youtube videos. Each channel has a subject and the channels play in a sort of realtime. so no going forward or back. Perfect for channel surfing.
With that Heat and more energy to create preasure you can create Coal! The circle is now complete.
@prologic +1 for FrankenPHP. And built into caddy is also swell.
yeah its the same dude.
This project is verrrry alpha. all the configuration is literally in the code.
@movq my bad man. I left off a return in the formatter func. I have a PR to fix waiting on @prologic
@lyse wow on my browser it shows up as all stars! •••••••
its not remote... though its on a mountain side where the land grants allowed monopolies to occur. Pretty wild that it happened but only specific vendors have utility right of ways. Its been in litigation with the city for years.
@bender haha funny! though i just realized my ISP is the only one with fiber pulled to the property so i would have to get a phone line from them some how. The other ISP in the area is basically a mobile hotspot.
We received the abuse report below regarding network abuse from the IP address indicated. On researching I see that HTTPS (tcp 443) traffic is continuing and originating from you NAT IP address 100.64.x.x This was further found to be originating from your firewall/router at 192.168.x.x (MAC D8:58:D7:x:x:x). This abuse is continuing and constitues a violation of [ISP] Acceptable Use Policy and Terms of Service. Please take action to identify the source of the abuse and prevent it from continuing. Failure to stop the abuse may result in suspension or cancellation of service.
Thank you,
he emailed my ISP about causing logging abuse. This is the only real ISP in my area, its gonna basically send me back to dialup.
Hey so.. i just got an email from my ISP saying they will terminate my service. Did i break something @abucci ?
i imagine this is the agreement that the lower plebs are stuck in. Larger enterprise accounts wont fall under these agreements. When I worked a hospital we would get agreements like this with contracts and the legal would line out things like this add new language and send them back.
@prologic Yeah that is probably what was happening. I wish that go build could embed the values that go install does.
I havnt seen any emails about the outage at work. I know i have the mac crowdstrike client though. My buddy that works at a hospital says they wernt affected.
I feel like complexity is measured differently at different levels of a project..
- at the function level you use cyclomatic complexity or how many branches internally and how much you need to keep in mind as it calls out to other functions.
- at a file/module level is a balance of the module doing too much against being so granular that you have cross dependency across modules. I have trouble with keeping things dry at this level because it can lead to parts being so abstract or generalized that it adds complexity.
- at a project level i suppose its a matter of how coupled things are across sub-modules.
The delete button doesn't work either.. @prologictwtxt.net?
So updated. Seems to duplicate here in the ui. And what is this "Read More" on every twt now?
@prologic Well ain't that grand? I'll get it updated.
@prologic Well ain't that grand? I'll get it updated
Here has been north of 38C all week. Its pretty ick. I would love a bit of rain to cool down.
it works fine if you properly escape your urls!
URIs include components and subcomponents that are delimited by
characters in the "reserved" set. These characters are called
"reserved" because they may (or may not) be defined as delimiters by
the generic syntax, by each scheme-specific syntax, or by the
implementation-specific syntax of a URI's dereferencing algorithm.
If data for a URI component would conflict with a reserved
character's purpose as a delimiter, then the conflicting data must be
percent-encoded before the URI is formed.
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "=" @bender He is running on the latest macbook pro with 128G memory. though the chrome app seems to be sitting at 125MB. i am a bit suspicious about that stat since we dont see all the worker threads and he is currently sitting on 40GB of non cache ram.
@prologic on the the timeline with mentions filter I missing the latest mention that comes up in the mentions page.
Oh.. And you are mentioning my dev instance here 😄
@prologic how do i enable htmx? i built latest main
Probably the @ after the < is causing it to break out
@movq Product activation? Oh.. I never had to deal with that. I always had the CD-R XP Pro version with the enterprise key written in sharpie that my brother got somehow.
@anth If you can find a UL 150 certified media safe it should stay at or below 150°F which should protect tape, CDs, etc.
@movq Just don't install windows 11. I believe XP is peak Windows OS anyhow.
Its quite nice. I have been half tempted to make a twtxt client with it
@shreyan first you must clearly explain what a monad is.
@prologic because the downside of over-leveraging yourself is you lose your house.. or more.
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"
it is an addon in the download tool. Or you can use xcaddy to build it in.

its a notebook tool like evernote. @sorenpeter linked it above: https://joplinapp.org/
yup! just need to add the webdav extension and configure it up a path and user/pass. caddy handles everything else.
UDF is where its at. Not some silly red or blue book that cant even have more than 8+3 filenames!
@mckinley its hosted on the mini at home and ingress is handled through my MTR vm.
@mckinley 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.
@bender 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.
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.
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.
and then i have a compact version that makes things more grep'able in scripts.

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.
@lyse 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.
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.
@mckinley Don't forget the syntax for arrays of sets [[foo.bars]] [[foo.bars]] [[foo.bars]]
@lyse 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.
how would that work with your encryption keys? you send them to a server that hopefully you control?
@movq 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.
@quark 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.
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.
@movq before this century. Back when colleges taught C++ instead of Java for CS degrees.
@lyse Yeah the func in func threw me off.. The generic type iter.Seq[V] does make things a bit more clear though.
Things can get very interesting when we add the iter.Pull function in the mix. It works like pythons yield from.

the function can yield two values to include an index.

The range function can signal when to stop running by returning false from the yield function.

@movq NASM is great. I remember playing with it back in my HS days. It has lots of little helps to make assembly more approachable.
Not even in the valley. This is Silicon Slopes, baby!
@movq 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.
@eapl.me the 24th of June 2002 was a pivotal year in my life.
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. 
@movq 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.
@prologic pretty nothing berger. The "blowout" was pretty tame coming from Linus kill yourself now. The world will be a better place" 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.
@prologic ahhh! Its the dark reader plugin breaking the page.
Not a fan of this one because the only context is machine readable.
Ha, this is cool. Has its flaws, although is easy to remember.
An RNG that runs in your brain
Ha, this is cool. Has its flaws, although is easy to remember.
An RNG that runs in your brain
Trying out a boost format. seems better with text after....
@eapl.me trying out a boost format.
Ha, this is cool. Has its flaws, although is easy to remember.
An RNG that runs in your brain
@sorenpeter 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 (<a href="?search=hash" class="tag">#hash</a>) <a href="/timeline/profile?url=url">@nick</a><a href="url" class="webmention"></a> > "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
@eapl.me this is interesting. Is the square bracket something used in the wild for multilingual twts?
@prologic 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.
@eapl.me kinda like the format for markdown images?  ?
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.
When I built I had a blue conduit installed from outside in to the util room.
Laser all the way. Inkjets are cheaper to replace the printer than to buy the ink for a reason.
Are they doing fiber to outside with ether in? Or will it make it inside the house?
It would help for UX for sure. emoji keyboards are hard to come by on the desktop.
@lyse 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.
@lyse i first learned about it from this vid https://www.youtube.com/watch?v=6JxvKfSV9Ns&pp=ygUOZmlib25hY2NpIGhlYXA%3D
and this site: https://www.programiz.com/dsa/fibonacci-heap
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.
https://git.sour.is/xuu/advent-of-code/src/branch/main/search.go#L168-L268
@prologic What I did as a work around for mattermost was hijack the gitlab oauth login with my own auth server.
OH MY FREAKING HECK. So.. I made my pather 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.
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.
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.
@lyse 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.
@movq So.. i eventually made it to the end on this one.. was able to reuse code from days 8 and 9!
SSBzdGlsbCBkbyBub3QgdW5kZXJzdGFuZCB3aHkgdXNpbmcgdGhlIHJhdGUgb2YgY2hhbmdlIGlu IHRoZSBwdXNoZXMgZ2l2ZXMgbWUgdGhlIGFuc3dlci4uIGJ1dCB5ZWFoLi4K
@movq you are probably right.. there seems to be a final 10 trend found over on Reddit.

@movq I wish they just muted them out instead of making it an awfully loud meep sound.
Around and around you go. When we sync up? Nobody knows!
@prologic day 6 is super easy if you have int64 and some binomial theory. Skip ahead for the easy stars and catch up!
Oh.. Right. Need subtract and divide too for the binomial
@movq 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?
The word forms is part two. In this one you want to find the first digit and last digit. Think searching '1' - '9'
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.
took a few attempts.. but i managed to do it in half the time!
@movq 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 @eapl.me 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.
Ahh I see how someone did it.
https://github.com/immannino/advent-of-go/blob/master/cmd/2023.go#L30-L40
I could have made my search smarter using a prefix search rather than scanning the full buffer for each iteration.
@movq haha! I'm sure they had fun working around stuff like nineight
@movq Dang. Really going overboard with this!
@prologic 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
My code is here. https://git.sour.is/xuu/advent-of-code-2023
Oof. Its quite everywhere here in my area. Hope its not too bad there.
@prologic you must not have any friends with plex shares. I got one. 
@prologic I long ago moved my evernote content to joplin.
@darch webmentions are dispatched from here https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/post_handler.go#L160-L169
@prologic 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.
@prologic 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 https://quorablog.quora.com/Introducing-creator-monetization-for-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.
@prologic 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.
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.
@movq 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. 🤞
@eapl.me 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.
@abucci 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
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.
Really?? I have not yet seen this warning. Using ublock origin.
Suuuuure. If someone could run a quantum algorithm on a smart phone that would be novel
@movq time to write your own browser? Or at least a fork maintained outside the EU?
I suppose the p90/p50 would be higher. Right? I never remember which way that funnel goes.
@prologic 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...
Oh. I pulled up the feed and its at eli.li instead of theoatmeal.com
@prologic curious that this feed has a image from a 3rd party domain.
@mckinley you got some radiation issues? I am guessing this is non ECC rams.
@lyse I wish more standardization around distributed issues and PRs within the repo ala git-bug was around for this. I see it has added some bridge tooling now.
@prologic 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.
jellyfin is also a good alternative with free apps for your phone.
I like how you can just toss out partitions and not have to worry about sizing them right.
@lyse that and malformed XML errors were hostile AF to users that came across them.
So far it all seems prey snappy. No long pauses when pulling up threads at all.
@prologic 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.
@prologic 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.
@prologic we need to finally break away from twtxt URLs and embrace @nick@server to webfinger lookups.
@prologic 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?
@prologic I had a peering to NNTP back in the day. That would be neat to setup.
I like FIDO2 as a replacement for passwords. But you gotta keep track of the little dongle
I picked up a tiny nuc a bit ago with 64G ram and 16 ryzen cores.
How much CPU you got in the server farm? I thought you had a whole rack.
Woh.. never heard of it. Growing up it was always just the MS EDIT.EXE or for more advanced stuff Nortons editor.
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.
@movq that is soo much traffic. I don't think I have ever broken 1TB /mo across my VMS ever.
@prologic was this in reply to a different thread? Or maybe a hash collision?
@abucci excellent work on embedding the YO in Hello
@abucci @prologic 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.
@abucci my last experience with it was with a Debian package which is known for being out of date :-D
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.
@hecanjog 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.
I suppose to lesson confusion I would rename Is to Because
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. @lyse 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.
You can have Error return just "permission not allowed" if the array is empty. It would print the same as the first.
yeah.. i guess he upped that... but scrolling for a bit can burn through that quite quickly.
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.
Funny.. I would never buy an iPhone again. My wife switched back this last phone update and I can't stand the interface.
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.
@prologic 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.
But remember the LLM is only a very good auto complete.
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.
Boy, the quality of Time is fallen from when it was the Time of its Time to being nearly the Time of our Time!
Man.. Putin is really becoming the 'Stalin' of Russia!
@prologic 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.
@movq § after we pass the key over to the GOV cloud for our protection.
@abucci 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.
I setup Joplin with caddy as the WebDAV server. Works okay. The e2e encryption can get messed up sometimes. Supports markdown and images.
@abucci read my new skibloreet about why social meets payments is the next level idea! For just §5 bitshlongs a month on my serfdomage site!
Also a interesting contender. https://store.minisforum.com/products/minisforum-um773-lite?variant=43717641994485
ECC ram would make it perfect.
@shreyan probably ~1k up to 1.5k. One I found had 64G ram and 12C / 16T for 1.1k
@prologic have trued to get a RasPi lately? Them things are Unobtainium
@abucci 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
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.
I too get this error.it comes and goes. Seems cookie related.
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.
@shreyan my condolences for the pain you no doubt will inflict upon others that will have to maintain whatever you write in Ruby.
@prologic 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.
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 webfinger. We have come full circle on this loop!
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.
From this post: https://news.ycombinator.com/item?id=35606763
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.
@darch 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.
And to add close integration with salty/ratchet for realtime private chat
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.
@abucci that is an ironic example. Since the inventor of the seatbelt gave rights to use the technology freely.
Very cool. I like the chain rules. I wonder how it performs against lextwt.
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``` @prologic 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.
@eldersnake apparently someone that generates graphql endpoints for a biiiig app
its not that you are dumb.. just that you are not hyperfocused into a very specific domain of knowledge.
@prologic 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?
@prologic 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.
@prologic 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
probably some now that the free COVID loans that required staffing numbers are over the staffing is no longer needed.
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.
interesting that in my pod this is showing in reply to something.. but in the twtxt is has no subject.

@prologic The parse is correct. this seems to be something with the markdown render.
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!
@abucci 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
@mckinley i use pass along with the android and browser-pass clients. it is very good and keeping in sync is pretty simple.
@mckinley very weird things going on for me.. i can see your twt but its not showing up as a reply or fork? 
i am curious why I only get 5 twts in yarn when they have several more on the feed. so something isnt parsing right.
@abucci i have an old copy of the 2005 version from university if you want to give it a read through. its quite dry.
i have one box with virmach that is something like 3 vcpu 5.88g ram and 15g disk. for $29/year.
@prologic yap. This was an offer message to you. rachet-over-yarn mode enabled!
@prologic 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.
@abucci 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"
it seems they are following the URN format of a URI where you just prefix things with colons.
urn:example:apple:pear:plum:cherry
@abucci see here in the okta docs: https://developer.okta.com/docs/reference/api/webfinger/ they are adding a prefix to the acct
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
... @prologic 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.
@prologic 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.
@prologic What is the SMART reading for the disk?
@abucci did you know about the chip inside USB-C cables?
https://connectorsupplier.com/usb-type-c-what-you-need-to-know/
some groups have created their own chips that have hidden keyloggers that can phone home over network connections.
Interesting. Ive been using backupninja with Borg for snapshots.
Huh. I thought I had that one. Must be an unteste regression. Will add it to the list!
@prologic billionaires don't exist. That many resources tied up by single individuals muck up the whole system.
@prologic 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.
@prologic so basically you would use cgit + gitbug with some webhooks?
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
I am offended that you did not post your snarky twt.
I'll let the head of the bird site comment on that:

@prologic @justamoment Yep, my back yard security cam. And my poor weather station buried in the snow.
@prologic NFT non-enthusiast for the #NFT #rebuttal
Is it something to do with implicit declaration of printf?
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!
@lyse anyone willing to copy/paste security related things without understanding are gonna have a bad time.
@lyse Its just dead simple.. and others will salt which makes repeatability in examples a pain.
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 { 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) { how install gomodot? also.. @prologic your domain has some pretty strong SEO mojo searching for install "gomodot" puts you on the google first page. 
@lyse 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.
@carsten 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.
@eaplmx 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.
(by the way Jesus is born end of September beginning of October)
or August... or Jun-July... or April.. hard to say really.
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.
@prologic the go get and go mod tidy wont fetch new changes. that's all a manual affair AFAIK
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. 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.
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.
@prologic I'm sure Monroe would like to know about them.
@eaplmx I didn't like the original click wheel. I think the first mini wheel was the better of them
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
@movq 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.

@lyse @prologic 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.
@lyse interesting... ill look into the parsing on that one
@lyse interesting... ill look into the parsing on that one
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.
this will be setup to share to other pods that are running a version after it gets implemented...
it uses the queries you define for add/del/set/keys. which corrispond to something like INSERT INTO <table> (key, value) VALUES ($key, $value), DELETE ..., or UPDATE ...
the commands are issued by using the maddycli but not the running maddy daemon.
see https://maddy.email/reference/table/sql_query/
the best way to locate in source is anything that implements the MutableTable interface... https://github.com/foxcpp/maddy/blob/master/framework/module/table.go#L38
@tkanos 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.
Very cool. I am digging the multipurpose use for this kind of parser.
FIDO 2 isn't too difficult. modern-ish browsers will support it natively now so the JS required is quite minimal.
for service registration like nickserv. really its only for password recovery so a trow away is fine.
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
-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.
oh wow.. no clue. maybe a config issue where its loading the webassm from a different domain? https vs http even?
And that I can silence it without having or go through the full test announcing fire and carbon monox throughout the house.
My home router has a honeypot for some services on the public facing ports. https://haas.nic.cz/
Ah figured it out.. Seems the box yarn is on is having issues with the certificate behind the LB.
for some reason its showing the twt from 2 days ago instead of the current value
@mckinley really the language authors should have added those to the standard spec by now. That is just obscene.
@abucci Its not better than a Cat5e. I have had two versions of the device. The old ones were only 200Mbps i didn't have the MAC issue but its like using an old 10baseT. The newer model 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.
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.
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.
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
@prologic odd is it maybe a wrong mime type thing? Should be text/calendar. Some http servers can mistakenly mark them application/octet-stream
@movq the real question is... Can it ScreamTracker3?
@lyse 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.
(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 { 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 { 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.
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.
@prologic can Yarn pods be consumers to other yarn pods?
weechat has very nice remote frontend ability. i run mine headless with glowing bear there are also iOS and Android frontends
Agree. we should parse the form but not output to feeds.
@prologic Oh.. reading comprehension is strong today.. you went to US and now back.
@prologic Hol-Up. You are state side now? That's a pretty big change!
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 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.
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
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.
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.
@novaburst Ah.. that is probably the XMPP verify code.. it doesnt really work that well. I aught to take it out.
@mutefall interesting.. were you working on one of the two universities that used it between 1989 and 1991?
@prologic yeah. For commercial use even. Just need to put an attribution note in the project README
@prologic if we do adopt this one it is CC-BY from twitter. https://twemoji.twitter.com
@lyse Excellent use of old denim, and also excellent use of long-form twt!
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.
@novaburst I doubt there will ever be a 2.0 ... It may end up like java and they strip off the 1.
@ullarah works for me! A tricky bitmight be if it splits within a codeblock so markdown can't parse
;-) I seem to remember there being g a script that checks for 1.17. Maybe that is only on make preflight
@prologic 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 :)
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/
i agree that lextwt is probably mature enough to have its own lib
Look at you all using naked links! Try https://twtxt.net!
@screem we have had to really shorten our process. I think long interviews were scaring off talent.
@screem yah I finally saw all of Dave's twts and figured he had explained Gog's/gitea better.
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
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?
@eldersnake yep. And when its sat to sat connections are online it will have better cross planet latency than under sea cable. FWIW
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.
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.
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.
This is like my 5rh day at it. I suck at words and spelling. So this is good practice.
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?
@prologic I dont get it. What am I looking at? The domain 8s missing for me
huh so that site doesnt give you the share emoji like wordle.at?
oh my bad.. the official site has a german version..
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.
Not sure really? i see your Joker image fine on my end.
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.
@fastidious 🕑 Hi, the current time is about a quarter past two in the afternoon 🌅.
inflation benefits the debtor at the expense of the creditor. The real danger is deflation.
@fastidious +1 ...Now just a way to come up with the $20 per twt to store the data.
That's better.. Though the cache will need to be perged in affected nodes.
Hey. I my own local forward tool. https://github.com/JonLundy/sshfwd it uses ssh port forwards.
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.
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.
I use VScode. Others seemto like JetBrains GoLand.
@fastidious 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.
Haha that guy comes up every time BTC peaks a bit higher. He is never gonna find it.
@prologic why were they even working? Did they think a big warehouse full of shelves of dangers would be safe?
@prologic former CEO of Twitter and countless ETH/NFT scammers
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.
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.
DS9 is best Star Trek. And that last second half of the last season where they go all out. chef kiss
@fastidious @darch y'all got a passcode for that zoom link?
@thecanine 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.
If only there was a way to forward feeds for continuity.
@fastidious tbh I wish it were the nick.txt
Like txt.sour.is/xuu.txt
@lyse What the heck? no emoji? do you even Unicode!
@fastidious Yes. there is a --flag for it. i have mine set for some crazy long time.
@lyse 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
@lyse 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
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.
JavaScript : web apps
I understand the hate for JavaScript. But what option is there for writing web enabled applications for desktop / mobile?
@movq You can always use a 5GB video file if the UI hashes it with SHA512 before posting to the server.
@fastidious (#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.
@fastidious You might not want to .. like the other tiktok it is rather pointless noise. Especially because its set to my personal timezone.
What happens to the reply when the head goes away?
@lyse wow! your very own customized cutlery holder? nice!
did some debugging and it looks like the advanced URL was breaking. @fastidious @movq can you try the wkd now?
via keyoxide with wkd: https://keyoxide.org/wkd/me%40sour.is
looks like i might be missing a policy file.. though the key is GET able.

@fastidious Yeah.. mine is all server side.. so it doesn't make much sense to be encrypt/decrypting anything. :D
Hmm it should be on wkd.. though the webserver might be borked.. lemme check
Is there a status page of known pods? I imagine you have something in your monitoring setup?
@prologic I'm not really big on WoT. (I think openpgp keyserver strips those signatures out. ) there needs to be a better way.
@movq keys.openpgp.org is a descent key server. They only publish a key the at has a valid email.
@prologic 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.
@mckinley well.. we did used to have a long form blog on here.. but it kinda went by the wayside.
@movq 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.
I am in the camp of wishing i could delete arbitrary twts.
@fastidious sorry. the fix was around having a mention in parenthesis like (yo @prologic)
@fastidious fixed this one yesterday. https://git.mills.io/yarnsocial/yarn/pulls/502
@prologic 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
@prologic make the text field twt.LiteralText() instead of twt.FormatText() and you should be good. https://i.imgur.com/FIpSnkj.png
@prologic i do not. i made my own version of TikTok feed. (with custom timezone!)
@lyse awesome! i love failing test cases. Do you have them pushed up on a branch to check out?
@prologic Maybe it could be as a twt with a time far i n the future
@prologic I mean pin as in having a specific twt displayed at the top of my feed always.
@prologic finally updated yarnd.. FORK!? Awesome!
This is pretty cool. I like the link idea. Gives me an idea about pining twits I think are important.
using this as the service: https://github.com/JonLundy/sshfwd
a simple Makefile for forwarding internet to your local machine:
SSH_HOST=https://xuu.me
PRIV_KEY=~/.ssh/id_ed25519
forward: Once a day.. though if it hasn't updated in n-months maybe once a week?
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
I wrote part of a configuration tool with embedded FORTH to validate schemas. It was awesome
Don't think I can get to 300eur but could probably get 50usd/mo for the pool
I have had my vanity setup for the longest time. sour.is/x/toolbox
@jlj @prologic 👋 keeping busy. Been working like crazy to put away for a down payment on a new house. Summer is looking to be even more.
/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 @mckinley @prologic I have updated the ticket with my findings.. its not what you expect! /clickbait https://github.com/jointwt/twtxt/issues/424
@prologic Woh. That is unexpected.. I'll look into it.
@antonio @mckinley @prologic 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.
lol. yeah i am in deep at the new job. probably need a little more time to settle in
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.
@prologic @antonio I have been trying out session. Its got a pretty simple design. not a lot of frills.
0515e4d5d6cec712a054f21b46d4f90a001af34e893131263ce34f2121d0450310
@jlj excellent! We could add a translate twt for twts of another language to the UI with this.
Is there a usable API for language translation? Non-Google preferable.
I apologize for being absent the last little bit. Started a new job and have been quite focused there.
@prologic @adi @jlj @readfog I too would love to see the "internal" package decrease and clearly defined / modular packages increase.
Twtxt is distributed like in the old school unix2unix copy days
@lyse (#hut4mnq) I am so sorry for you. I left my Java job for Go. Though through "restructuring" its become a Python job.
@thewismit @jlj 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.
Awesome! do you have the svg available to add to my logo?
@prologic @anth Sounds like a good idea. The hash to conv/search url should stay local to a pod.
@darch @prologic 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.
@prologic tricky.. punctuation is being grouped in with other text. i need to break up string tokens.
@prologic 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.
@prologic :-D i consider myself subpar on UX outside of React, but can def give it a stab.
@prologic 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?
@xuu @prologic we could show first level inline like twitter does. With links for deeper discussion.
@prologic speaking of complexity.. How would checking twts for sub conversations complexify things?
@prologic would that need a NLP library? The lang would be great for a search engine to find language prefs.
@prologic @darch 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!
@vain 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.
Hmm on mobile it shows as the text :poop: and not 💩
Maybe the mobile version has text emoji substitution like slack/discord does?
@xuu @prologic @thewismit ah.. probably a bug with the re parser. looks like i can do it without the <>'s with lex
@thewismit @prologic Yo. wrap that naked link in some <>'s https://fosstodon.org/@/105673078150704477
@thewismit @darch @adi @prologic There is another: @hecanjog
@prologic 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 @xuu @jlj @hxii only if you look at the raw text file https://0xff.nu/blog.txt
@jlj oh dang the reply didnt add the reply. It was to @hxii because Firefox shows his shruggy like ¯\_(ツ)_/¯
@prologic @hxii 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 ¯\(ツ)\/¯
@xuu @hxii example: https://txt.sour.is/conv/ls4ef4a
@hxii There is another twter that uses !<wikiword wikiaddr> or !wikiword for their wiki intigrations.
@prologic @thewismit possible, or a pod following any feeds it finds, if any one follows or not. So it has more twts cached
@prologic Should be ready to merge with lex as opt-in option. Need more eyes on it and some clean up.
@prologic @thewismit Ya I get that error a lot. I mostly use the web on mobile as a result.
@prologic i think i finally suss'd out my hash issue.. now to figure out why im losing avatars on restart.
@prologic @thewismit not sure.. im using Caddy instead of nginix
@xuu @prologic hmm from what i can tell its parsing ok.. something got broken in the markdown conversion...
@prologic hmm this line seems to be tricky to parse. will need to look into it.
@prologic test. Running new parser on txt.sour.is. :D
@prologic 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.
@prologic 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.
@prologic 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.
@prologic 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?
@prologic 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.
@prologic 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.
@prologic 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)
@prologic 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
@prologic 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.
@prologic It is pretty basic, and depends on some local changes i am still working out on my branch.. https://gist.github.com/JonLundy/dc19028ec81eb4ad6af74c50255e7cee
@lyse @prologic 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 @prologic that I do. lol. I am xuu on hackint.org and freenode
@prologic sure. I don't use signal much because I have to disclose my personal phone. Telegram? https://www.t.me/xypheri
@prologic yep!some of the lexer is directly copied from monkey-lang. love that book series.
@prologic ah I need to add an edge case for naked urls with fragments. 
@prologic 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
@prologic 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.
@prologic as promised! https://github.com/JonLundy/twtxt/blob/xuu/integrate-lextwt/types/lextwt/lextwt_test.go#<L435-L461 https://txt.sour.is/search?tag=L435-L461>
the lexer is nearing completion.. the tough part left is rooting out all the formatting code.
@prologic @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.
@prologic went over to watch this one in my home town last night. https://youtu.be/kUZB0_Jx3iE
@prologic Wrote up a blog post here: https://txt.sour.is/blog/xuu/2020/12/21/twtxt-auto-discovery
@deadguy @prologic 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.
@adi @prologic I'll give it a spin first thing in the AM
@prologic when its ready.. this is still in beta.
@prologic 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.
@prologic after stewing on it. I really like the idea of a wiki. throw it on the roadmap after DMs 😆
@prologic (#keh22ka) 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
@prologic 😁 that is me testing locally. does it notify you somehow when I follow?
@prologic 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
@prologic have you tried using the macos github build environment? looks like they have a windows one too.
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.
There is.. but we lost the transform file to make it legible.
-----BEGIN CRYPTUTIL ENCRYPTED MESSAGE-----
l0GwFAQpx3ed+bZlcQ+pexbynFzZOm8EI/FivGbWQ16whyTkToVv8S2GSAjrsJoT
37MdaBDpoitli/f/aP130b6O6SnK/LdHHJ1DTvWgxB14sq9b4mRtk7HvYzA=
-----END CRYPTUTIL ENCRYPTED MESSAGE----- @prologic 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 🤣
@prologic 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.
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.
@prologic 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.
@prologic pod should probably track revocation of device keys and delete the encryptedkeys that are paired with revoked keys
@prologic device gets the cypertext and uses it's device key to decrypt one of the keys and then decrypts the cypertext.
@prologic sender generates an AES key encrypts message. gets the device list for user and encrypts key for each device. sends the encryptedkeys+cypertext.
@prologic 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.
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?
@prologic 👋 I can take a stab at it when I am done with the changes I am working on.
@prologic 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 ;)
@prologic 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.
@prologic when i get the code up to a shareable level ill ping with what i have.
@prologic so.. convert the 4 attributes in the struct to private, add getters plus some the other methods that make sense.
type Twt interface { @prologic 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?
@prologic 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#<L284 https://txt.sour.is/search?tag=L284>)
Kinda wish [types.Twt](https://github.com/jointwt/twtxt/blob/master/types/twt.go#<L53 https://txt.sour.is/search?tag=L53>) was an interface. it's sooo close.
@lyxal @prologic 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 🤔
@prologic an added benefit of the avatar: would be the user could put their gravatar/libravatar image url like https://key.sour.is/avatar/01bc6186d015218c23dec55447e502e669ca4c61c7566dfcaa1cac256108dff0
@prologic 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.
@prologic 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.
@prologic looking through the drafts it looks like it actually used SRV records as recently as 2018 😵
@prologic 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]/<hash>
@xuu With SRV you can set what hostname to be used (and port/priority/etc)
@xuu Not too happy with WKD's use of CNAME over SRV for discovery of openpgpkey.
@adi @prologic 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.
@prologic @twtxt I have noticed that I will get some duplicate web mention notifications. some kind of dedup would be helpful.
@prologic ha yeah. COVID makes for a timey-wimey mish-mash. Worked on some WKD and fought with my XMPP client a bit.
@prologic well nice chat. it's off to bed for me.
@prologic do you think twt will ever add ActivityPub integration?
@prologic 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.
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.
@prologic 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.
@xuu @prologic something that would be interesting would be libravatar for the user image. i made one that does the same for a profile cover image.
@prologic 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.
@prologic 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.
@prologic Oh snap. that's what i get for copy paste! ill just have to repost and update my key.
@prologic this is a very curious project. I would love to see how it manages to do its federation between pods.
Timeline Sandbox 















