Oddbean new post about | logout

Notes by Erik | export

 Suuuper rough, but here's a client that can handle nostr activites (like garmin / strava / etc..)
https://nostrava.xyz

It's still a WIP and will only use one specific relay current to write all of the activity related notes (relay.nostrava.xyz).

While the NIP is still being worked on, I figure it makes sense to not publish these notes to a bunch of public relays as things could still change.

Currently auth is only supported via nip-07 browser extensions (more auth support will come soon).

When you share an activity, you can expand "Share Settings" to choose exactly what you want to share as a NOSTR note. You can trim the Map file so that you don't dox your exact location, you can also choose to not upload your activity file.  In this case, only a summary of statistic will be generated.

I'm using the "sports-lib" javascript library to analyze the activity files. It's far from perfect, but it's good enough for now. My hope is that other who are better at this kind of analysis can create DVMs or other libraries to generate summaries from the raw GPX files, which other clients can then pick up on.

Relevant code is here: 
https://github.com/ebrakke/nostr-ava
https://github.com/ebrakke/nostr-activities-sdk

#running #nostrava #activities #cycling #gpx 
 Crushed my half marathon goal. First one ever, was shooting for sub 2 hours. 
#running 
https://image.nostr.build/0554e26518e77f287a0026900876bc437691109d59a2c4acdf3b6f813978ead6.jpg 
 Asking for pro advice: If you would create a multiplatform mobile app today, which language and f... 
 Having never built a full product with any of the existing frameworks, take what I say with a grain if salt. 

I always struggled with expo and react Native. Never worked how I wanted it to ootb. 

http://capacitorjs.com seems quite promising. Mainly because you can use any web framwork, so porting something like cashu.me seems easier. 

Never really delved into it though, as a pure web dev, I always get frustrated when I go into the mobile world.  
 First glimpse of #nostr-ava a strava alternative built on Nostr. 

This client will facilitate uploading activity files (gpx, fit, etc..) and turning them into nostr activity events.  https://wikifreedia.xyz/activity-nip/borrakkor@nostrplebs.com

The powerful piece here is you get to control exactly which data is released publicly. If you choose, your activity file and route map get uploaded to a blossom server, and is referenced in the event. 

Soon you'll be able to encrypt these files so only you can view them. You will also be able to utilize DVMs to further analyze your activities, and post summaries from the output. 

Currently the client does very basic analysis on the uploaded file, but I forsee many different analyses being available. 

Hoping to deploy an alpha version next week. 

#running #cycling #blossom #proofofwork

https://video.nostr.build/4919028ac828461e7a58e7d23420e312df867a2569abbda60ae81ee551dcfee4.mp4 
 @hzrd149 I made a small PR on `blossom-server-sdk` https://github.com/hzrd149/blossom-server-sdk/pull/1 
 Huge shoutout to the creators of https://github.com/sports-alliance/sports-lib

It has everything I need to do activity file analysis right the browser. I can even convert from .fit to .gpx files!

#running #nostr-ava 
 https://docs.polycentric.io/protocol/

Pokycentric seems interesting. It's like if NOSTR was built on protobufs and REST 
 https://wikifreedia.xyz/activity-nip/borrakkor@nostrplebs.com

WIP nip for activities on NOSTR. This is a nip designed to share different activities (running, biking, hiking, etc...) and generate summaries of these activities. 

Clients can handle managing just a users activities in a totally offline / private way. But you can also share the bits about your activity that are worth sharing. 

For example, you don't have to upload your whole activity file to your activity just to get a summary. You could generate all your stats locally, and then publish a trimmed GPX file for others to see without getting doxxed. 

If summary files are readily shared, then DVMs could generate summaries from those summaries. So without having to leak all your precise GPX files, you could still figure out activity streaks, or similar routes near you. 
DVMs could generate routes from partial GPX files. I feel like the possibilities are really endless here. 

Those who are data oriented can run their own models in Python and publish the results. Result sets could be standardized. 

There's a lot to be done, but I think it could be exciting.  
 I'm working on implementing this in a svelte app currently. I'll be creating a library in typescript specifically for handling the flow of this protocol. 

I'm using blossom to manage the gpx file storage.  
 For nostr-ava I think I'm going to lean into a DVM model to analyze gpx files. Here's the flow I'm thinking 
1) user uploads a gpx file in a client and adds relevant metadata around it (name, description, etc...)
2) GPX files is uploaded to a blossom server and the location is stored in the original note
3) user can then request analysis of the gpx file by creating a DVM job request. This will allow multiple ways to analyze (there's a lot of cool python libraries to transform GPX files), and also allows DVMs to use output from previous DVMs to do meta analysis. 

Clients can pull in the original notes + any DVM results per activity and display them as they see fit. 

I'm envisioning DVMs for run matching, analyzing your progress throughout the year, comparing with other similar routes (e.g. segments and KOM stuff)

#nostrava #running 
 AI seems to be going the way or crypto with the "but think of the energy and emissions!" Rhetoric.  
 Motivated to revisit a Strava alternative for nostr. I think it can be achieved with DVMs and file storage. 

Haven't thought too deeply about this, but let's say everything starts with a GPX file. You upload this note and it has your metadata for the activity (like a Strava post) and a location where the gpx file can be retrieved. 

Then you have a number of DVMs that can perform analysis on this file. Anything from really basic things (like elevation and HR analysis) to complex features that stava has (matched runs, segments, etc)

I think using something like a geohash would enable segments and matched runs quite easily. You can start to see similar activities in your area. 

Pair it with something like npub.pro and you have your own Strava like blog.

#running #strava 
 Python has a number of great libraries for analyzing GPX / geojson files. I think these could be the DVMs operating on the gpx files. 
 I started building something like this when I first heard about nostr 
https://github.com/ebrakke/nostr-ava 
 Yes totally. I think gpx is an easy spot to start, but pulling in more watch data than gpx would be sweet. 

I also think the ability to share segments would be awesome. I'm thinking there could be a few new note kinds to facilitate something like this. E.g. Routes, Segments, Activities 
 The current version of Keychat uses a seed phrase instead of nsec. This has caused a lot of contr... 
 I would imagine with just an nsec, they can't do proper key derivation (like they can with seed phrases)

So just having an nsec means their messaging scheme couldn't function. Just a guess though.  
 Instead of using the raw json as content, you could use the v4 encoded token. This is how most wallets expect tokens to be sent and received 
https://github.com/cashubtc/nuts/blob/main/00.md#v4-tokens 
 Is there any work being done on private #cashu mints?
I'd love to have something I can setup in m... 
 Can we do Zap Splits with Cashu yet?

nostr:nprofile1qqs9pk20ctv9srrg9vr354p03v0rrgsqkpggh2u45va7... 
 When the client generates the zaps
, it would just lock half to one npub, and the other half to another (assuming 50/50 split)

So the client wallet would take X amount of ecash and request the mint to create new ecash tokens locked to the proper npubs, and then you just sent those along with your zap note. 
 
 The receiver could just look for ecash locked to its npub, and then claim it immediately and add it to a wallet. 
A couple of web based cashu wallets do this currently using nostr DMs 
 nostr:nprofile1qqsrx4k7vxeev3unrn5ty9qt9w4cxlsgzrqw752mh6fduqjgqs9chhgppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qg6waehxw309aex2mrp0yh8x6rfw3nx7unrv5hx7mn99uslkdah great job with npub.pro

Also, the "login with DM" flow was one of the easiest login experiences I've had so far with nostr.  
 Nice, that sounds like an excellent tradeoff for a product like this! 
 Websites that should be preserved forever:

Archive.org
Freesound.org
Librivox.org
Sacred-texts.c... 
 I was thinking the other day, I wonder if soulseek could utilize nostr. Seems like a weak point that there are just one or two servers out there enabling the whole protocol  
 does cashu-ts support locking cashu to a pubkey and melting cashu from a pubkey?

what do I need ... 
 I think still only on the staging branch
https://github.com/cashubtc/cashu-ts/tree/staging 
 https://officialrealbook.com/history/

Information wants to be free 
 Nostr song lyrics, guitar tabs, and sheet music. Because the existing sites that host that stuff always try to push their apps. 

Can basically just be a wiki style note.  
 Tabstr or chordstr 
 Upgraded an old 5th Gen iPod video. New case, bigger battery, and 256GB SSD

https://video.nostr.build/94ea899ca7cd33198287281141febf5aaba60e029a5e533452383e6529054271.mp4 
 Had 0 intentions of running this morning. Out late at a show last night. Woke up and saw it'd be 95 degrees today. Managed to get out and do my run!
#proofofwork #running
https://image.nostr.build/e2aa3b4c020846ebcb7eafbc9a821129277a2b20efe412a34a4083fcfb5b326c.jpg 
 Hi friends,

My coworker is curious and wants to learn about #Bitcoin. Do you have video recommen... 
 @PABLOF7z short PR to fix the text wrapping issue on wikifreedia 

https://github.com/pablof7z/wiki/pull/31 
 First (rough) pass at a #climbing NIP
https://wikifreedia.xyz/crimpstr-nip/borrakkor@nostrplebs.com

I opted for a new kind for these events as to not clutter existing wiki applications, though we could easily use the 30818 kind and just utilize a type and c tag to get climbing related things. 

I think the biggest unlock here is incorporating the geohash of an area / route into the name. This will ensure that we can disambiguate between climbs of the same name. 

It also has the added benefit of hierarchical ordering built in, so you can easily group climbs together without having to enforce a strict hierarchy like MP does. 

Using curation sets for tick lists, and for area oganizations (e.g. ordered climbs from left to right) might also be sufficient. 

My goal here is not enforce any ordering on the notes themselves, but let people group things together however they see fit. 

@PABLOF7z @rylan  
 A little demo / POC of #crimpstr

Using @PABLOF7z's wiki nip, and some data that I just happened to find somewhere, this could be a great decentralized repository of climbing knowledge. 

Indexing events using meilisearch for great discoverability (something mountain project sucks at)

 https://video.nostr.build/46037225337a6cf9ab5005bb753efeb360ca8fb0e12a046322b533696236046d.mp4

@rylan
#climbing 
 Yes! I'm starting to draft a NIP
One thing I worry about, tons of routes with the same way 

Definitely needs a way in the wiki links to disambiguate between which instance of a climb an app should go to.  
 What if everyone just published all of their random notes about topics from obsidian or other note taking apps to nostr, and then used wikifreedia or similar to browse it all. 

Not worrying about it being a Wikipedia level article (though some could), but really just reading though everyone's research or thoughts on a personal topic. 

They can centralize around categories or common names. 

A bit like urban dictionary, but for any topic. 
 Will strava on nostr motivate you to work towards fitness? nostr:note1vauc9wtqsp0vdy4xwn9l58dc78g... 
 I actually started working on something like this when I first heard about nostr
https://github.com/ebrakke/nostr-ava

The bottleneck I hit was gpx files were too large to upload as notes, and this was pre any kind of file upload nips. So ignore the ipfs stuff in the codebase. 

If anyone wants to pick up work on it, feel free 
 Some good ideas here for an ecash betting pool. He relies on a central coordinator though.  
 https://github.com/ebrakke/obsidian-nostr-wiki

Here's the source code for the obsidian nostr wiki plugin. Super WIP, but feel free to clone it, fork it, make it better. 

Currently it will treat front matter as tags to add to the published note, and it will strip front matter out of the content so it displays nicely.  
 My favorite thing about moving to Colorado from the east coast was the super friendly ethics around bolting (for most of the front range). It made climbing around Boston pretty inaccessible. 

Those lines look sweet! 
 Surprisingly easy to write an obsidian plugin that publishes wiki events on nostr. 

More to come at some point! This should help with maintaining something like crimpstr. 

@PABLOF7z
 https://video.nostr.build/0b50f3ecfa1ba60ec6ca67fc2b4bd7f5b2e436f5fd7fbc2cbe9a07722ccef125.mp4 
 Working on a go implementation of a #blossom server for an idea I'm trying to flesh out. 
https://git.brakke.cc/borrakkor/community-stack/src/branch/main/blossom

Go is great! Go is fun. Go makes me realize that spending all my time writing JavaScript is insane. 
I also used Alpine JS in the frontend to add a little bit of state and functionality to sign the auth events. It was nice, a lot like vue and angularJS, and no build steps.  
 This + searchability/ discoverability. When apps all publish the same common data formats, you almost get discoverability for free.  
 Let's say I wanted to make an application built on nostr, and I want to utilizes nostr auth. 
To take some burden off more normie users, I was thinking the service could store an ncrypt for the user. 

From the users perspective, they just have to remember a password like any other site. But under the hood, the ncrypt can be sent down an stored in local storage (if missing). And then the user can unlock it with the password to sign events client side.

I'm trying to think from a security perspective if there's any harm in the server storing the ncrypt. It's basically like storing a hashed password, but if the key is ever leaked, then someone with access to the DB could reveal the nsec. 

 
 Makes sense. I've never been able to enjoy the nip-46 bunker setup. I love the idea, but the UX around having to change browser tabs (plus wonkiness in brave browser) leaves a lot to be desired for a mobile login usecase. 

I want to make an experience where basically a user can slowly "opt in" to more control over their key management, without compromising the security of their key.  
 Is Unleashed.chat free? 

I signed up, asked a few questions, and now it tells me I don't have en... 
 You get a few credits by signing up with an email (I think), but other than that it's not free. You just fund your account via lightning, and it will automatically deduct based on usage  
 Htmx + pocket base could be a good solution for a self hosted community stack with a plugin architecture  
 After listening to the Citadel dispatch with hzrd and Stewart, it got my brain spinning. 
Maybe you can build a "gated community" on top of nostr, with all different kinds of plugins based on NIPs

And then at any point, community members can fork the entire stack to create a new community. 
Could be useful for communities that require moderation, but the underlying data ends up being totally forkable. 

Members could pay dues for hosting costs of the CDN / relay / DB. You could even customize the login experience to something more traditional (like user just creates a password which will be used to generate an ncrypt) and the community can store that. https://image.nostr.build/42368ccf30d6ec24138d173bf74c6b7b61ead390718bdb9a28fcc3b407f7934c.jpg 
 Sick! I grew up in Boston, never climbed in Connecticut before. Hard east coast trad? 
 Paying with Bitcoin using the coinbase managed pay with crypto product. 
"Pay with Bitcoin" https://image.nostr.build/1fbfe0275986c040d493893c23c07d79f493ff40eb4eee7a63684b50f8e0eb6e.jpg 
 Coming up on a 24 hour fast. Starting to get easier. Next one will be 48!
https://image.nostr.build/615082fcfad5aa4de7dee714c25fa8303a1240eb098d9f3211c34047b9ca7acc.jpg 
 It went well! Gearing up to do a 48h one in the near future  
 In imposing today’s sentence, Judge Forrest said:  “There must be no doubt that lawlessness will not be tolerated.  There must be no doubt that no one is above the law - no matter one’s education or privileges.  All stand equal before the law.  There must be no doubt that you cannot run a massive criminal enterprise and because it occurred over the Internet minimize the crime committed on that basis.”

She said before handing a life sentence to Ross Ulbricht. 
 https://twitter.com/YWNReporter/status/1772546230310056446

My worst fears whenever I cross a bridge. Absolutely insane how fast it collapsed.  
 Hi!

Following nostr:npub1m4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsajc2jl ‘s suggest... 
 Yeah I've been thinking about something like this for a couple years now. My first attempt was building something in top of ipfs, but that was kind of a nightmare.

At one point I scraped all of the routes from mountain project, I think I have them somewhere so it's a good "seed" to start something. 

Creating a nostr client for climbing seems like the next logical step. Zapping or sending ecash to route developers would be 🔥.  
 Totally! It's kinda like taking @PABLO 🌶️'s wikifreedia design, but applying it specifically to climbing / hiking. 
Especially with climbing, people disagree on grades, and you might want to vote on a fork of a route, rather than giving admins all the power to keep the grade of a route.  
 Everything on my fork is 8a/v10