Interesting ๐ค nostr:npub12qxvc5evxqt3rky25mfskywugalx5vnhppfl32cu903cnwpyu0uqkmq8u9 nostr:note1pxl2zf8xvyvsk4ac697dp36eypzyj2hq3u7n7v2txh6sp47nk9lsp4fvv8
sorry I've remove my local relay, it seems like my syncing things I'm doing keep triggering him lol
dave is reviving hellthreads now. wtf. I didn't code him to do this.
So about that rate-limiter on nostr:npub1tsgw6pncspg4d5u778hk63s3pls70evs4czfsmx0fzap9xwt203qtkhtk4, nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s. ๐
he was just working though his backlog ... ๐
I have this on notedeck but when I come back there is wayyy too much to scroll up. its useful for notifications though.
for the main timeline it will likely require some kind of summary of the top posts when you come back. these are going to be called scroll-up algorithms.
lol I synced a bunch of notes to my local node and it seems to have triggered a bunch of responses in dave
We already have music statuses https://github.com/nostr-protocol/nips/blob/master/38.md#live-statuses
Talked about this here for my vision of p2p syncing between personal nostr nodes:
yeah its like git except we have rsync+sql functionality built in for syncing (negentropy). few understand how awesome this is.
I personally think its nicer on desktop. you just press a button to sync all your notes to nostrdb. then you can just backup that nostrdb file.
eventually all damus clients will ensure that your notes are backed up and synced across all your devices for redundancy.
Can Damus and Nostur act as private storage for the userโs notes, replies and reboosts?
Nostur shows 270 days back and Damus scrolled to 1y (no more specific details).
Are notes deleted in the local storage or is it reasonable to expect that the accumulation of notes over time represents the full archive?
nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s nostr:npub1n0sturny6w9zn2wwexju3m6asu7zh7jnv2jt2kx6tlmfhs7thq0qnflahe
damus keeps everything forever until you delete the app. getting it to do infinite scrollback is something I'm still working on.
we have auth, but its buggy on ios18 beta atm
You guys planning anti klepto? Seems like stakes are higher with dark skippy and sd card swap attacks
I recently nuked my damus iOS db so I wanted a way to rebuild my search database of all my notes. I just synced to strfry and imported them back all into nostrdb with `ndb import`. importing to nostrdb enables a complete local search index of all my notes. notedeck reads from that database directly, so notedeck search is immediately populated.
the strfry sync step is a bit manual so it will be nice when you can just click a button in notedeck/ios and this will just work.
if you download strfry on your computer you can do:
strfry sync '--filter={"authors": ["32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245"]}' --dir=down wss://relay.damus.io
to make a backup of all of your notes, where 32e18... is your hex pubkey. it will only copy down the notes your local strfry relay doesn't have. negentropy set reconciliation ftw.
working on coding this up as a feature in notedeck/damus ios, so all your notes stay synced between your devices.
nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s you sorry for another ping this morning but i just realised i could join damus purple from my mac, so i did. Was looking to join TestFlight and i remember someone mentioning its purple exclusive now, where can i find the link? thanks!
https://damus.io/purple/login sorry we will be making this more obvious soon
Ok this is pretty cool!
nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s shared an apple podcasts link - I missed it in my main nostr feed - but saw it in Fountain and because of open podcasting even though it was an apple podcast link Fountain can find the episode, show me the playable content card, and let me queue it up and download it!

nostr:note1wq5shmhetlg7kndnwx5uktr2u3fqmegl5xtzwqy6yt4rn4h5wm4qppajlf
Awesome
I like Theories of Everything, Quanta podcast, sean carroll. I need more tbh, I only have a small list I follow atm.
Pro Tip: Always consider compressing your videos before uploading them to Nostr.
This can significantly reduce the load on CDN providers, faster video loading for everyone, with minimal impact on quality.
It's free and takes few seconds, upto 90% size reduction.
Compression tool:
https://tools.rotato.app/compress

Clients should really be doing this for users though
Few understand how true this is. you basically had to be a devops nerd to run a mastodon instance. Relays are just a single program where you press go and it just works. nostr:note1qqqrddwxrc9ggh82g2xrnryz3gak07g2m5nlhnq7r90rd0xxz40sxf5kpq
If these are the worst issues then we have come a long way ๐

On legacy social, algo-fuelled ragebait is the main tool you can use to boost your perceived credibility and reputation.
On nostr, your reputation is tied to long term keys. The most valuable asset is your credibility and trust among other nodes, which has to be earned over time the old fashioned way: interesting and positive interactions, sharing content, etc. nostr:note1rt0sc90pghmwratqcdq8e6fnc5jwjfva2emewmh7dhaaf83z9nhq4235zt
Wen nostrich on lex? 
Poetry seemed decent, at least nix could deal with that
The closest thing that hides ips that is not a vpn is apples private relay. Luckily we can actually use this tech in damus, but there are rate limiting issues on the relay that are ip based so it can be tricky
Damus does this regardless of the ios setting
For macOS-specific APIs to handle emoji input and other IME-related features in `winit`, you'll need to delve into the macOS native APIs and potentially extend `winit` to support these features. Here are some key macOS APIs and steps to guide you through this process:
### Key macOS APIs for Text Input and IME:
1. **NSTextInputClient Protocol**:
- This protocol defines methods that handle text input and input method events. Implementing this protocol allows your application to receive and handle complex text input, including emojis.
- [NSTextInputClient Documentation](https://developer.apple.com/documentation/appkit/nstextinputclient)
2. **NSResponder**:
- The `NSResponder` class provides methods for handling key events. You can override these methods to capture and process emoji input.
- [NSResponder Documentation](https://developer.apple.com/documentation/appkit/nsresponder)
3. **NSApplication and NSWindow**:
- These classes manage the application lifecycle and window events. You might need to interact with these classes to properly handle text input events.
- [NSApplication Documentation](https://developer.apple.com/documentation/appkit/nsapplication)
- [NSWindow Documentation](https://developer.apple.com/documentation/appkit/nswindow)
### Steps to Extend `winit` for macOS:
1. **Create a Custom Event Handler**:
- Extend `winit` to handle macOS-specific text input events by creating a custom event handler that implements the `NSTextInputClient` protocol.
2. **Bridge Rust and Objective-C**:
- Use the `objc` crate to bridge between Rust and Objective-C. This allows you to call macOS APIs from Rust and handle text input events.
3. **Modify `winit` to Use the Custom Event Handler**:
- Integrate your custom event handler into `winit` to capture and process text input events, including emoji input.
### Example Code Snippets:
Here are some example code snippets to help you get started with extending `winit` for macOS.
#### Bridging Rust and Objective-C:
```rust
use objc::runtime::{Object, Sel};
use objc::{class, msg_send, sel, sel_impl};
extern "C" fn handle_text_input(this: &Object, _cmd: Sel, text: *const Object) {
// Handle the text input here
println!("Received text input");
}
fn main() {
unsafe {
let cls = class!(NSApplication);
let _: () = msg_send![cls, sharedApplication];
let delegate: *mut Object = msg_send![class!(NSObject), new];
let _: () = msg_send![delegate, setHandler: handle_text_input];
let _: () = msg_send![class!(NSApp), setDelegate: delegate];
}
}
```
#### Custom Event Handler in Objective-C:
```objc
#import
@interface CustomTextInputHandler : NSObject
@end
@implementation CustomTextInputHandler
- (void)insertText:(id)string replacementRange:(NSRange)replacementRange {
// Handle text input, including emojis
NSLog(@"Received text input: %@", string);
}
// Implement other NSTextInputClient methods as needed
@end
```
### Integrating with `winit`:
- Modify the `winit` source code to use your custom event handler for handling text input events on macOS.
- Ensure that `winit` can capture and propagate these events to your application.
### Resources:
- `objc` crate: [objc](https://crates.io/crates/objc)
- Apple Developer Documentation: [NSTextInputClient](https://developer.apple.com/documentation/appkit/nstextinputclient), [NSResponder](https://developer.apple.com/documentation/appkit/nsresponder), [NSApplication](https://developer.apple.com/documentation/appkit/nsapplication), [NSWindow](https://developer.apple.com/documentation/appkit/nswindow)
By extending `winit` to handle macOS-specific text input events and implementing the necessary protocols, you can add support for emoji input and other IME features in your application.
This will get me started, thanks!
You can run your own relay, put it in your relay list, and then clients will start reading from that when you post. You are uncensorable as long as the relay is up. Is this right nostr:npub1tsgw6pncspg4d5u778hk63s3pls70evs4czfsmx0fzap9xwt203qtkhtk4 ?
