Oddbean new post about | logout
 Who I am & why I exist re- #introductions https://video.nostr.build/d6772035074f78feb001c98310f4a0bda4c4f3b9ae6907c3a21023baa759a1cb.mp4  
 Hey Rox. I don't know if I said hello before, but, hello and welcome! 🤙🏻💜🫂 Nostr gives us a portable digital social identity and puts us in charge of our social graph. It's beautiful. 
 Haha yes i got a warm welcome some time ago but haven’t fully moved onto using nostr primarily, which is where I’m at now. The big reason is because I’ve learned an enormous amount about cryptography with NWC and cashu and have been able to push pretty interesting boundaries since then, so the choice to move is pretty clear in comparison to the algorithm apps. I’m getting older and the original version of the internet seems to be the right direction to create abundance for folks. 
 Awesome, man!  
 Welcome! Cryptography I hear you say!

Well, if you are interested, along with what @liminal shared, GitCitadel does a few things now, including a library I maintain as the C reference implementation of the nip44 encryption spec. The library is called noscrypt, and it's purpose is to be a fully featured (and compliant) cryptography utility library, it focuses on correctness, stability, and performance. 

We also work on Aedile, an up-and-coming C++ sdk. 

Here is the full project list
https://wikifreedia.xyz/a/naddr1qvzqqqrcvgpzphtxf40yq9jr82xdd8cqtts5szqyx5tcndvaukhsvfmduetr85ceqydhwumn8ghj7argv4nx7un9wd6zumn0wd68yvfwvdhk6tcqpankjarrd96xzer9dskkgmmrwvlzm7aq 
 We're (GitCitadel) are developing educational technology on top of nostr to help create a knowledge base of nostr development. Using Behavior Driven Development we can create pieces of text that can be navigated either by humans or an LLM to help find the functions needed to implement ideas.

If you want to dive in, here are some sources. We want anyone interested in nostr to build the client using examples from other experienced devs. Also happy to explain more.

nostr:nevent1qqsv939lv5kvu7w3asfdjv6y243rhq7w998hqu4d8e224du349cl3qcpz9mhxue69uhkummnw3ezuamfdejj7q3qm3xdppkd0njmrqe2ma8a6ys39zvgp5k8u22mev8xsnqp4nh80srqxpqqqqqqzewng6f

nostr:nevent1qqs04kedxaut7k3ns6kmv9n47rw298j3qjkeem2xmnxdrn8qyxv43cspr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qgsdcnxssmxheed3sv4d7n7azggj3xyq6tr799dukrngfsq6emnhcpsrqsqqqqqpfpzh3l 
 The specs we've formalized so far:
Modularizing content - chunking. Helps with navagibility and encapsulating ideas,
https://wikifreedia.xyz/nkbip-01/npub1m4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsajc2jl

Embeddings on nostr - you find a piece of text worth embedding? Put the embedding on nostr for anyone to grab and use.

https://wikifreedia.xyz/nkbip-02/npub1m3xdppkd0njmrqe2ma8a6ys39zvgp5k8u22mev8xsnqp4nh80srqhqa5sf 
 Our whole Operating Function / OS is premised on the concept of closures.
Take typed functional programming and create a closure of the highest loop and you end up with the full state of a running machine (homoiconic data _and_ code) as a single serializable and portable value.

I think our tech compliments many of the ideas in NKBIP-01 very well. What you are describing is basically Supercombinators for ideas, what we provide is supercombinators for compute 🤝 

https://www.youtube.com/watch?v=pQzeYhSp1pw 
 We're gonna need you to explain these concepts in terms of Behavior Driven Development, maybe I'd understand then 😉🤣 
 My only familiarity with BDD is the testing strategy (TDD/BDD, etc.) is that what you mean?

I'm very happy to explain these things to you, but want to make sure we're meeting in the right place.

You can think of a supercombinator as a function with no free variables - no external state or necessary context. Everything you need to get a reproduceable result when running a function with certain arguments is all bundled up in one place with no dependencies. Your mention of a "Semantic Closure" struck me as extremely overlapping with our use of closures and it seemed like a good starting place to see where we might be able to help each other.

At the risk of going too far too soon: The open source system we're building can be thought of as a kind of Turing complete programming environment + Virtual Machine. It's a single, portable binary with no external dependencies necessary on the host system. You run this one binary, and the entire VM/OS is running. All data and code (user data, programs, etc.) is collapsed into a single value - one enormous number (thus it, too, is highly portable. you can turn off a running machine, send the entire "single value" over the network, turn it back on on the other end and it picks up right where it left off - it doesn't even know it turned off.)

Data and functions are content-addressable within the machine no matter where it is, similar to IPFS content addressing. The machine was over here, providing data or a function result at content-addressed-endpoint-X earlier? then you "moved the logical machine to a different physical machine" and turned it back on? your data or function is still available at the same content-addressed-endpoint-X as before.

This is highly valuable for Nostr relays, DVMs, static content hosting, chat backend, you name it. Anything that would benefit from an always-on, always-available "server-like" process that you'd like to be extremely simple, dependency-free, trivial to run by a non-technical person, and durable forever.

I'll stop there because there a billion things I could say here - but the rabbit hole should be dug in the most useful direction for you - not wherever my rambling is taking me...

  
 t-y vinney 
 The specs we've formalized so far:
Modularizing content - chunking. Helps with navagibility and encapsulating ideas,
https://wikifreedia.xyz/nkbip-01/npub1m4ny6hjqzepn4rxknuq94c2gpqzr29ufkkw7ttcxyak7v43n6vvsajc2jl

Embeddings on nostr - you find a piece of text worth embedding? Put the embedding on nostr for anyone to grab and use.

https://wikifreedia.xyz/nkbip-02/npub1m3xdppkd0njmrqe2ma8a6ys39zvgp5k8u22mev8xsnqp4nh80srqhqa5sf 
 Our whole Operating Function / OS is premised on the concept of closures.
Take typed functional programming and create a closure of the highest loop and you end up with the full state of a running machine (homoiconic data _and_ code) as a single serializable and portable value.

I think our tech compliments many of the ideas in NKBIP-01 very well. What you are describing is basically Supercombinators for ideas, what we provide is supercombinators for compute 🤝 

https://www.youtube.com/watch?v=pQzeYhSp1pw 
 We're gonna need you to explain these concepts in terms of Behavior Driven Development, maybe I'd understand then 😉🤣 
 My only familiarity with BDD is the testing strategy (TDD/BDD, etc.) is that what you mean?

I'm very happy to explain these things to you, but want to make sure we're meeting in the right place.

You can think of a supercombinator as a function with no free variables - no external state or necessary context. Everything you need to get a reproduceable result when running a function with certain arguments is all bundled up in one place with no dependencies. Your mention of a "Semantic Closure" struck me as extremely overlapping with our use of closures and it seemed like a good starting place to see where we might be able to help each other.

At the risk of going too far too soon: The open source system we're building can be thought of as a kind of Turing complete programming environment + Virtual Machine. It's a single, portable binary with no external dependencies necessary on the host system. You run this one binary, and the entire VM/OS is running. All data and code (user data, programs, etc.) is collapsed into a single value - one enormous number (thus it, too, is highly portable. you can turn off a running machine, send the entire "single value" over the network, turn it back on on the other end and it picks up right where it left off - it doesn't even know it turned off.)

Data and functions are content-addressable within the machine no matter where it is, similar to IPFS content addressing. The machine was over here, providing data or a function result at content-addressed-endpoint-X earlier? then you "moved the logical machine to a different physical machine" and turned it back on? your data or function is still available at the same content-addressed-endpoint-X as before.

This is highly valuable for Nostr relays, DVMs, static content hosting, chat backend, you name it. Anything that would benefit from an always-on, always-available "server-like" process that you'd like to be extremely simple, dependency-free, trivial to run by a non-technical person, and durable forever.

I'll stop there because there a billion things I could say here - but the rabbit hole should be dug in the most useful direction for you - not wherever my rambling is taking me...

  
 t-y vinney