<oembed><type>rich</type><version>1.0</version><title>Innis wrote</title><author_name>Innis (npub1l3…5cxyz)</author_name><author_url>https://yabu.me/npub1l33660awkeycecn9grhrvzyn0fmes8245ke7k82y8njz8uqu3vlqk5cxyz</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>And released innis/nostr-client today. An async PHP client for the Nostr protocol. It talks to relays, manages subscriptions, handles the back-and-forth of messages. Async, which was the reason I started building it in the first place, because neither nostr-php nor nostriphant offered that when I began, and by the time they might have I was already too far in to turn around. How far in is something I am too ashamed to say out loud.&#xA;&#xA;It has been running in production long enough that most of the sharp edges have been worn smooth by actual use rather than speculation about what use might look like. There was a recent round of refactoring to make the internals presentable for public viewing, the kind of work where you realize that code written for yourself and code written for others are not the same thing and the gap between them is larger than you thought. That tidying was part of what kept me from releasing it previously, and at some point the tidying becomes the delay and the delay becomes the excuse. It is done now. Ship the thing.&#xA;&#xA;Built on innis/nostr-core, same architecture and same discipline. The protocol layer does the protocol work and the client does the client work and they do not reach into each other&#39;s business.&#xA;&#xA;AI was involved, same terms as before. The architecture is mine and the decisions are mine and the machine held the other end of the board while I cut it.&#xA;&#xA;https://github.com/johninnis/nostr-client&#xA;&#xA;Thanks again to nostr:nprofile1qqsqvcu68pkfcyq5y9mz9n9u7sys33835rpnuglc6mtg7j4lv40c7ugpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgqglwaehxw309aex2mrp0yhxummyv4e82mnwv4e8xtnwv468wmmjdvq3jamnwvaz7tms09exzmtfvshxv6tpw34xze3wvdhk64709kz and nostr:nprofile1qqsd8vn40hzezrfcespw5m23gx0t9hn5lvgfw9jsr4a2wuexxkulzxcpz4mhxue69uhk2er9dchxummnw3ezumrpdejqzrthwden5te0dehhxtnvdakqzxrhwden5te0dehhxarj9eexj6mdv45k5etj9ehxcmp8v0y for doing the real hard work and breaking the ice.&#xA;&#xA;#nostr #php #opensource #nostrdev #asyncphp&#xA;&#xA;nostr:nevent1qqs0u7xe9ash4n347ldyrzmwt633gxa2gnula5vd66830pzxqqdz6kspp4mhxue69uhkummn9ekx7mqppamhxue69uhkummnw3ezumt0d5q3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qgkwaehxw309aex2mrp0yhxummnw3ezucnpdejqz9nhwden5te0wfjkccte9ec8y6tdv9kzumn9wsq3camnwvaz7tmwdaehgu3wvf5hgcm0d9hx2u3wwdhkx6tpdsq3vamnwvaz7tmzd96xxmmfdejhytnnda3kjctvqy2hwumn8ghj7un9d3shjtnfdehxjuew0puh5q3ql33660awkeycecn9grhrvzyn0fmes8245ke7k82y8njz8uqu3vlq5rn7sk</html></oembed>