Matt Lorentz's avatar
Matt Lorentz
matt@nos.social
npub16zsl...92l7
Technologist, solarpunk, gamer, backpacker, passionate about using the internet to push more power to more people.
Matt Lorentz's avatar
mplorentz 1 year ago
Putting the Nostr follow list into a single event was a mistake. Because there is no single source of truth in Nostr an app can never know if it has the latest version of the list before publishing a new version. If it doesn’t have the latest version of the list then the user loses data. This is true of every other kind of Nostr list too. A better model would have been to publish a separate event for each follow with a single p tag, like this: `{ id: “1234...”, “pubkey”: “283h2ea12…”, kind: [follow], “tags”: [“p”, “2ekac887…”] … }`. When you follow someone you just publish a new follow event. When you unfollow someone you delete the event. Or if you hate delete you can publish a new “unfollow” event for that person, it’s really the same thing. This is how Secure Scuttlebutt models the follow graph and it works well enough. If you want to get really fancy you could arrange all the follow events in a tree and use a CRDT or use range-based set reconciliation to make an eventually consistent list of people you are following. This is how the Willow protocol works if I understand it correctly. But that is way too fancy for Nostr, which is kind of predicated on the idea that things are simple to implement and the UX is good enough.
Matt Lorentz's avatar
mplorentz 1 year ago
I just realized I’ve had my Ergodox EZ keyboard for five years, so I’m going to do a little five year review. For those who don’t know the Ergodox is an ergonomic keyboard that is fully open-source and really customizable. It’s split into two pieces so you can position your wrists naturally, and it comes with little legs to help you set it up at the angle that is most comfortable. They have some nice software you can use to set individual keys to do whatever you want, and you can change out the key switches and the key caps if you are into that. It’s also pretty modular and easy to repair if any part of it breaks. Overall I’m pretty happy with it. At $350 it is by far the most expensive keyboard I’ve ever bought, but as someone who is on the keyboard over 8 hours a day for work and hobbies I don’t regret it. My favorite part is definitely that I can position it the way that is comfortable to me. It has really helped with the wrist pain I was having which was really scary as a programmer in your 20s, and I change the position up every few months. I also really like that I can customize what the keys do. It has allowed me to get some really nice shortcuts going, like having one key I can use to mute no matter what video chat software I am using, or having hjkl mapped to arrow keys that I can use to navigate in any app. I’ve also changed out the keycaps once or twice and the key switches once which was really fun. It feels like getting a whole new keyboard. My biggest gripe is the position of the thumb keys. They are supposed to be positioned where your thumb would normally rest, and there are a lot of them because your thumb is your strongest finger and so you should theoretically be using it the most for typing. However they are a bit too far away for my small hands, and the angle is wrong. This is one problem I think ZSA solved with their newer keyboard the Moonlander. I would love to have one someday, but it hasn’t been enough of a problem for me to spend another $350. My only other gripe is that it just looks weird and clunky. I’m ok with that but some of the mechanical keyboards out there today are really beautiful and the Ergodox just isn’t. If you were in the market today I would just pick up a Moonlander as it’s a slight improvement on the Ergodox EZ. But the Ergodox remains a do-it-all top of the line keyboard. You can buy them here: and if you are really into it you can build one yourself:
Matt Lorentz's avatar
mplorentz 1 year ago
I get really angry when an org gets hacked and my data is stolen and in return they give me “1 year of identity theft monitoring” as if that’s going to do anything. The thieves can just wait a year to sell or use the data. However nowadays my data is stolen so frequently that by the time one year of free coverage ends there is another year of free coverage available from some other company. It’s funny in a way.
Matt Lorentz's avatar
mplorentz 1 year ago
Are most nostr clients using NIP-50 for search or something else? The two most popular relay implementations, strfry and nostr-rs-relay, don’t support NIP-50. We are looking for a big, reliable search relay to add to the default list in Nos.
Matt Lorentz's avatar
mplorentz 1 year ago
@Vitor Pamplona what logic does Amethyst use to decide whether to show a content warning on reported content? We have a AI bot (@Reportinator) going around labeling stuff and we’ve had several complaints and some targeted harassment towards our employees from Amethyst users who don’t like it. In Nos we only listen to reports from people you follow, but it sounds like Amethyst is doing something broader?
Matt Lorentz's avatar
mplorentz 1 year ago
@Terry Yiu I'm curious, since you have some experience with our codebase, do you see any high value areas in Nostr SDK that we could take advantage of in Nos? Besides the NIP-44 stuff of course. And do you have any ideas on how you would integrate Nostr SDK with a persistence framework? Is there one other than Core Data that you like?
Matt Lorentz's avatar
mplorentz 1 year ago
I just heard that the Swift Nostr SDK from @Terry Yiu and company hit 0.1.0 and is ready for folks to start using. I just opened a PR to pull it into Nos, we're going to take advantage of the new NIP-44 encryption code right away. Has anyone else started using it on a project?