Replies (12)

I’ve removed the last 2 builds from TestFlight because of some crashes related to the imposter checker, will have a fix out later #[0]
Pedro Vicente's avatar
Pedro Vicente 2 years ago
@Fabian Nostur is a neat client on Mac desktop. I find it easier to find things like replies in threads, compared to @npub1fjtd...fnas where it’s confusing to do that (maybe just me ) . Did you use native Swift?. My holiday project is to learn swift New iOS interface (iPad) 🙃 image
Pedro Vicente's avatar
Pedro Vicente 2 years ago
My iOS client is built with a C++ GUI library, but the result is not that good. So going iOS native. The only reason to use Swift is that I can use my C++ backend code and #nostr API . So using Swift just for the UI part
It’s easy to make nice UIs with SwiftUI but I found it difficult to get smooth scrolling performance, for that it’s probably better to use UIKit. I’m now using a mix of SwiftUI and UIKit but and I’m not really happy with it, maybe it will get better with iOS 17+
Pedro Vicente's avatar
Pedro Vicente 2 years ago
@Fabian Great write-up on MISSION.md "We don’t need to store our data on random relays, and hope our contact list doesn’t get lost, or leak metadata to the public. We can store everything on our device". This is EXACTLY what I was thiking for my app. Have a small database like SQLite on the device and load that first. Then query relays for updates. Have a standard import/export format for Nostr that different clients can use. Have this format be an official NIP . This format could be as simple as a linear array of EVENTS in JSON format. This is what I use in my dev database, as you can see a "database" can be as simple as 100 lines of code, with functions to read(), save(), append() and request(), (from relays) @melvincarvalho @fiatjaf @Will @jack
Pedro Vicente's avatar
Pedro Vicente 2 years ago
@Fabian Great write-up on MISSION.md "We don’t need to store our data on random relays, and hope our contact list doesn’t get lost, or leak metadata to the public. We can store everything on our device". This is EXACTLY what I was thiking for my app. Have a small database like SQLite on the device and load that first. Them query relays for updates. Have a standard import/export format for Nostr that different clients can use. Have this format be an official NIP . This format could be as simple as a linear array of EVENTS in JSON format. This is what I use in my dev database, as you can see a "database" can be as simple as 100 lines of code, with functions to read(), save(), append() and request(), (from relays) @Melvin Carvalho @jb55 @fiatjaf @jack
Pedro Vicente's avatar
Pedro Vicente 2 years ago
@Fabian Thanks for the tip! I was going to start with SwiftUI, but after reading this, UIKIt is the way to go. It seems SwiftUI is a kind of "declarative" format, and UIKit is a more traditional widget response like touch, etc. In my C++ iOS, I used QML, which is a declarative language that interacts with Qt's C++, but that is geared for small devices like microcontrollers and automative.
yep I’m using sqlite too now, through CoreData. Seems nostrdb will be great too when ready but for me the database is not the performance bottleneck right now
Pedro Vicente's avatar
Pedro Vicente 2 years ago
Also looking forward to try nostrdb, I’m doing (slowly doing) a Windows / Cmake port. It seems the latest benchmarks are very good @jb55 In my case I have no real DB, and the bottleneck is the time to query relays. For 1 relay only it takes about 4 seconds to get a feed of about 20 follows. But I guess there is not much room here for improvement because of the decentralized nature. So, the idea of having all locally cached in DB, and query asynchronously in background, for example https://github.com/pedro-vicente/nostrdb