Oddbean new post about | logout

Notes by tyiu | export

 Finished a bit of fundamental development on Nostr SDK iOS. Back to Comingle. https://image.nostr.build/c975929888b1d21da65e3c8602cf2a87cda2e5eb33603de9b2dd4084ede640ca.png  
 Let’s do it! 
 Can’t find who’s the CEO of Nostr. 
 🍄 New Coracle Release: 0.4.0

This is the big one — Coracle now has private groups! Read mor... 
 Nice work! 
 "Damus Android is going to be my little FU to Apple."

- nostr:npub1xtscya34g58tk0z605fvr788k263g... 
 I see only positives here. We all still win! 
 That bone marrow is 👌🏼 
 Within the last year, my knees have started to feel deterioration. It’s most noticeable when walking down stairs, where previously it would be no problem. Is this old age? 👴🏼 
 I’m looking for rare kinds to test the Other Stuff 
 NIP-52 calendar events? 
 Seems like it. It’s fairly new and not many clients have implemented it. Only Flockstr for now, I think, but probably no handler event for that kind yet for that client. @zach 
 My financial literacy is pretty poor and I want to improve. Seems like people rave about these books so maybe this is where I should start this year. https://image.nostr.build/9bc2c5615a217683ded64068f1d11aadf1e57f34a9166b393cddf2c8830b0f27.jpg  
 Our fridge is full of leftovers from last night, enough to feed us for 3-4 more meals. 
 They’re imported, but not sure about brands! We got them from an Eastern European / Central Asian supermarket in Brighton Beach, New York. 
 any interesting single player story-based games y'all would recommend? 
 Metal Gear Solid 
 Happy New Year, Nostr! 
 11 months ago I logged my first contribution to nostr. As I begun logging issue after issue, nost... 
 Thanks for all your contributions to Nostr. You are proof of how you don’t necessarily need to be a developer or designer to help with FOSS development. 
 Happy new year guys. I’m officially in 2024 
 Happy New Year! 
 Really cool visualization of my GitHub activity in 2023. It got my top languages incorrect — it’s definitely not C and Python, but Swift is accurate. #GitHubUnwrapped
https://video.nostr.build/e48ede4e02a24ff12e849b663551e45a762e806500b068517f3abdd0984e0cc4.mp4 
 Credit to @ryzizub as I saw it from him. 
 🙏🏼 That’s correct. About one-third of those pull requests were from me pulling in Damus translations created by translators, though, so I can’t take all the credit. 
 nostr.vegas sounds like a conference domain nostr:note1sk5gnllxn4ntv8074lkuwjpxty35n5m8dm0a9wuz44... 
 Pass. 
 Kinda tempted to add that as a setting in Damus. nostr:note1rrlk6fusu58uu5dadgmatwfwq0wgevjgdu68ucxq3z2wqmqpx2pq225gch 
 Fabian, I don’t use Nostur but I’m secretly a fan of your work and would love to see more iOS clients from others for Nostr. It’s even more impressive now that you’ve revealed that you built Nostur after observing Damus and wanting to learn Swift. Cool to learn about the Swift package, sounds similar to what we’re building for Nostr SDK. Thank you for all your contributions and I’m excited to see what’s next. 
 Fucking terrorist, Putin. Russia is a terrorist state.

“Russia launched 122 missiles and 36 drones against Ukrainian targets, officials said Friday, killing at least 18 civilians across the country in what an air force official said was the biggest aerial barrage of the 22-month war.”

“At least 86 people were injured and an unknown number were buried under rubble during the roughly 18-hour onslaught, Ukrainian officials said. Among the buildings reported to be damaged across Ukraine were a maternity hospital, apartment blocks and schools.”

https://www.npr.org/2023/12/29/1222099484/russia-launches-aerial-attacks-against-ukraine 
 Damus dev contributing to Amethyst code to improve interoperability and experience for everyone ... 
 🫂 
 Happy birthday, nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s 🎈🎉 ... 
 Happy birthday, Will! 
 This will likely be the last year of damus. Will try my best to make this thing sustainable, but ... 
 Damus got me started on Nostr and open source software development. I hope you’ll figure out a sustainable model. Nostr needs Damus. We need interoperability and diversity of clients. If Damus wins, we all win. 
 Laser eyes this time round 
 Welcome! 
 Meeting and talking with awesome internet people in person for the first time in the middle of seemingly nowhere beautiful Costa Rica, thanks to some random protocol that came out of nowhere three months prior. I was in awe. 
 @vita got featured in Marie Claire on the journey building her candle business, Fire Rabbit! So proud of her! Run the text through a translator if you don’t know Ukrainian. nostr:note1kzg0qqfz2p89nt4xn2dwe7dhr8fze8ut7rngpq57r72hfugl3xhsx95euz 
 The translations in damus are a great resource, maybe we could put them in some format that every... 
 Are you thinking of it as something another client could use verbatim to get translated app strings for free? Or more like a glossary so that translators of other clients know how to translate common Nostr terminology properly.

The former might be a bit difficult because each client may have different functionality so the copy won’t all match. The latter is definitely doable, though. Regardless, in spirit, it’s a nice idea. 
 Damus is using Apple’s recently deprecated locale-specific .strings and .stringsdict file formats. I have a PR open that converts Nos.social from .strings to Apple’s new multilingual .xcstrings file format (effectively JSON) which was possible because Crowdin supports that format, but I haven’t done it for Damus yet because Transifex doesn’t support it yet. In any case, if this were to be done, some platform agnostic format should be used. 
 You’re awesome for providing the translation server for free. Apple still does not expose a translation API, sadly. And Google’s local translation library is largely unmaintained and using a legacy stack that does not integrate with Damus (I’ve tried twice unsuccessfully). 
 Let me think about how to do this. Translations are no longer simple once you start dealing with plural rules. You’re using Rust, right? Is there a good Rust localization library? 
 What’s the blue fish? 
 One year ago, I discovered #Nostr and it’s been a life changing journey ever since. Met so many incredible human beings online and in-person from all over the world who value ideas of not just decentralization and anti-censorship, but also building communities, technology, and a whole myriad of other interests.

Nostr has given me a new purpose that I had not known before. Within two days of the discovery, I submitted my first pull request to Damus, which felt exhilarating to contribute to open source freedom tech that @jb55 started. A month later, Damus became the first ever multilingual Nostr client, supporting English and Spanish with help from @⚡₿it₿y₿it⚡ (and now in 26 languages thanks to our ~50 other translators), and the first Nostr client to integrate automatic machine translated notes into the reader’s preferred language, unlocking further global adoption, social networking, and publishing on this protocol as other clients quickly did the same. Half a year in, Nostr SDK for Apple Platforms kicked off with @montzstar and @klabo with a boost from @OpenSats with the goal was enabling developers to build Nostr clients on iOS, macOS, and other Apple platforms quicker and easier with this library.

We have a vast choice of clients and relays now built by talented builders and supported by this amazing community, that fulfill a whole bunch of use cases, and there’s so much more to do. I’m excited to see what we do in the next year.

I’m thankful for you all. Happy holidays, everyone! 
 End of Year #NYCstr Nostr meetup at @PUBKEY on Wednesday, December 27, 6pm! 🗽 all who are in town are welcome! nostr:note19sdxp7suhnnuz99ursdjlkefv7t4f24hvl5uvfear94uwpn956cqeqmnrs 
 Enjoy! We’ll see you when you get back. 🤙🏼 
 @Comingle didn’t make the cut for OpenSats again, but no matter. Plowing ahead! I’ve been spending a lot of time over the past few weeks building the Nostr SDK for Apple (another OpenSats-backed project) with @montzstar @klabo which will eventually be used to power the Comingle iOS app and encourage more developers to build iOS Nostr apps. 
 Congrats! Really great work. 
 What about NIP-51 private lists then? I don’t think the change formally addressed private lists even though it says to use the same encryption scheme as NIP-04. 
 Makes sense. There’s a couple NIPs that reference NIP-04 that need to be updated.

Anyway, nice work to everyone who worked on it! This is huge. 
 I went kind of crazy and completely revamped localization on @nos.social so that it uses the Apple-native string catalog format introduced in Xcode 15 and correctly handles all locales for pluralized strings. @mplorentz @rabble
https://github.com/planetary-social/nos/pull/738 
 Spaghetti / pasta bolognese is kinda my favourite dish that I’ve learned to cook in 2023. #foodstr https://image.nostr.build/197cfc5efe33f96a65a469ac1558c46d08e46087d403f50faf4866de3833763b.jpg  
 2 tbsp olive oil
400g/14oz beef mince (ground beef)
1 onion, diced
2 garlic cloves, chopped
100g/3½oz carrot, grated
2 x 400g tins chopped tomatoes
400ml/14fl oz stock (made from stock cube. Ideally beef, but any will do)
400g/14oz dried spaghetti
salt and pepper

I adjusted the recipe to serve only two people, so roughly half of the above quantities.

https://www.bbc.co.uk/food/recipes/easy_spaghetti_bolognese_93639 
 Can’t beat the original. Italy is amazing. 
 Bluesky now supports limiting who can reply to your post, which seems to stifle free speech. Seems like an inferior option to what we have on Nostr by choosing a client or relay that just filters the replies that you as the author or viewer want to see. https://image.nostr.build/0e7371a524e8ac4d7b90198475ceb975daebf76cfa190b9ada5d4be015a6f761.jpg  
 Had a vivid dream that the next Nostr World Unconference location was announced but I couldn’t figure out where it was. GM. 🤙🏼 
 My bank website didn’t accept Bitwarden’s Passkey integration. 🤷🏻‍♂️ 
 I tried on a different non-bank website and it worked seamlessly. Bitwarden doesn’t support passkeys on mobile yet, though. 
 Bitwarden also supports Passkeys. 
 My bank website didn’t accept Bitwarden’s Passkey integration. 🤷🏻‍♂️ 
Event not found
 The issue is that Damus supports only the old deprecated way of positional event tags, which is that the last tagged event tag is the event that is being replied to. Amethyst supports the new way, which is that each event tag explicitly defines what kind of marker (reply, root, or mention) without needing to rely on event tag ordering. Damus just needs to be fixed to support the new way. https://github.com/nostr-protocol/nips/blob/master/10.md 
 I’ve gotten so familiar with NIP-10 in the last few days because I’m implementing it right now in Nostr SDK. For maximum compatibility with older clients, Amethyst could probably be updated so that it orders event tags such that the event being replied to is still positioned last. 
 Fuck it. I’ll try to fix it myself. Diving into Amethyst code for the first time! 
 Done. @Vitor Pamplona Here’s the fix for Amethyst to add write support for NIP-10 deprecated positional tags in text notes to maximize backwards compatibility.
https://github.com/vitorpamplona/amethyst/pull/737

It’s a much larger lift to add support for the recommended approach of NIP-10 event tag markers on the Damus side, though, so I’ll leave that alone for now. 
 This doesn’t work if you’re replying directly to the root thread and also mention other events, or if you’re not replying at all and just want to mention events. The ambiguity is why positional event tags were deprecated. For the former case when it’s a direct reply to the root, I suppose I could update the PR such that the root event tag comes last to make it slightly less bug inducing, but it’ll still be wrong. 
Event not found
 🫂