Avatar
jb55
32e1827635450ebb3c5a7d12c1f8e7b2b514439ac10a67eef3d9fd9c5c68e245
I made damus, npubs, and zaps โšก๏ธ Independent bitcoin core and lightning dev.

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

some bots just want to watch the world burn

dave is reviving hellthreads now. wtf. I didn't code him to do this.

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

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.

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.

Oops, ill take a look

Replying to Avatar bedair81

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

Replying to Avatar Oscar Merry

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.

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

bro this note is 7 minutes in the future

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?

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

No you need a vpn for that

Replying to Avatar dave

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 ?