Sep's avatar
Sep
_@zignostr.com
npub18c55...0we7
2x opensats grantee. currently building native nostr infrastructure in zig: zig-nostr, signet, and plaza. fast local-first storage, safer remote signing, and high performance desktop client. free and open source.
Sep's avatar
Sep 9 hours ago
building a client that feels instant is mostly about not doing work. not re-reading what has not changed. not building what is off screen. not fetching what is already on disk. most of my performance work is deleting things. #plaza View quoted note →
Sep's avatar
Sep 10 hours ago
numbers from #plaza's feed while scrolling hard: about a twentieth of a millisecond to work out what to draw. the frame budget is 8 milliseconds. there is a lot of room in there. here's the first demo ever:
Sep's avatar
Sep 11 hours ago
#plaza is a nostr client written in Zig that draws its own pixels. no browser inside it, no web view, no javascript. it opens fast, it scrolls smooth, and it stays out of your way.
Sep's avatar
Sep 11 hours ago
opened #plaza and your notes are just there, instantly. it reads from your own machine first and talks to relays second. no spinner while a relay decides whether to answer you.
Sep's avatar
Sep 12 hours ago
#plaza scrolls the same whether your feed holds 20 notes or 2000. it only ever builds the handful of cards actually on your screen. everything below the fold costs nothing until you get there.
Sep's avatar
Sep 2 days ago
been building a native desktop client on top of my zig-nostr library. calling it Plaza. local-first. no browser. still early, but it's already pulling live notes off a relay. nice to watch it come together.
Sep's avatar
Sep 4 days ago
jumble.social is in a league of its own.
Sep's avatar
Sep 6 days ago
Signet design choice i'll defend: two processes. a headless daemon owns the key and the relay connections. the gui is just an approval queue over a loopback-only api. if the pretty half ever gets compromised, the half with the key does not care. View quoted note →
Sep's avatar
Sep 6 days ago
made a thing: Signet - a native remote signer for nostr. your key lives encrypted (NIP-49) inside a small daemon on your machine. apps request signatures over NIP-46, and every single request waits for an explicit approve/deny in a native macOS app. the key never enters the GUI, let alone a client. works over public relays, including ones behind NIP-42 auth.
Sep's avatar
Sep 6 days ago
benchmarked my zig-nostr store against nostrdb and rust-nostr and found my feed query ~90x slower than it should be. i collected every match, then sorted, then truncated. nostrdb walks its indexes newest-first and stops at the limit. adopted the approach, credited the teacher: 26ms → 0.28ms for a 20-author feed over 100k events. #devstr #zignostr
Sep's avatar
Sep 6 days ago
gm. favorite part of the zig-nostr library so far: a local-first event store on LMDB. zero-copy reads, events stay memory-mapped, modeled openly on nostrdb. the goal is feeds that render from disk in a blink while the network reconciles in the background. never the other way around.
Sep's avatar
Sep 1 week ago
been writing a lot of zig these days. it stays out of your way the way C does, but the build system is a real language you can think in. comptime still bends my brain a little. i like it.