Shalabh
shalabh.com
Shalabh
@shalabh.com
Programmable software systems "research" and philosophizing.

shalabh.com/programmable-systems

Computation is a physical process.

Any models we use to describe this process is imposed by us. What models would you choose?
Thank you I appreciate the links!
March 3, 2025 at 8:44 PM
they key aspects of this design i see are:
1. each node determines quorum independently
2. conflict free and order independent fact messages
3. each node only makes decisions for itself, but can be aware of the quorum decision being different.
March 3, 2025 at 6:35 AM
finally, these set of peers can be maintained by quorum as well, by using `peers` as a value.

if you read this far and are so inclined, lmk if this protocol or a better studied version exists. also lmk about obvious holes.
March 3, 2025 at 6:35 AM
C) if you propose N distinct values for key1 simultaneously, no value will get quorum. if you keep doing this you will have a livelock.

maybe this can be resolved by each peer noticing there's a quorum failure at version `@v3` and flipping their choice by proposing a new value the next version.
March 3, 2025 at 6:35 AM
B) if you propose (key1@v2=value2) and (key1@v2=value3) ie conflicting values to two peers simultaneously, one of the values will achieve quorum but all peers will eventually become aware of the quorum.
March 3, 2025 at 6:35 AM
so running thru scenarios:

A) if you propose (key1@v1=value1) to a peer on a new cluster, the peer will accept it and broadcast (key1@v1=value1, accepted_by=peer1). other peers will accept it facts will trickle through the cluster, eventually which each peer will be aware of the consensus.
March 3, 2025 at 6:35 AM
5. each peer determines quorum independently. so if N=5 and a peer sees that (key1@v2=value3) has been accepted by 3 peers, it knows that's the quorum and will reply 'key1@v2=value3' to the query for `key1`.
March 3, 2025 at 6:35 AM
4. every peer *accepts* the first key@version=value it gets for that key and version. this creates a new fact (keyX@versionY=valueZ, accepted_by=peer) - which is then broadcasted around. there are no conflicting facts ever, it's all append only information.
March 3, 2025 at 6:35 AM
In total armchair theorizing fashion, here is a consensus protocol I am thinking of:
1. no leader, N peers
2. peers gossip/broadcast facts to each other
3. each fact is (key1@v2=value3, accepted_by=peer5).
facts can always be forwarded as-is. the @v2 is the version for key1.
March 3, 2025 at 6:35 AM
Negative transfer of learning?
en.wikipedia.org/wiki/Negativ...
Negative transfer (memory) - Wikipedia
en.wikipedia.org
March 1, 2025 at 6:58 AM
Reposted by Shalabh
Plenty of reasons for this, which we've detailed in our newsletter: https://buttondown.com/northbaypython/archive/weve-extended-our-talk-submissions-window/

the most important thing: we do want to hear from you, so get your talk ideas in soon!
We've extended our talk submissions window
tl;dr: we're accepting talk proposals for North Bay Python 2025 for another two weeks; closing on February 21st. If you missed the original deadline for talk...
buttondown.com
February 11, 2025 at 9:03 PM
Hi, I'm curious what you think has held cython back?
February 9, 2025 at 11:00 PM
When activated, the runtime objects themselves can link back to the source objects they arose from. So we have a way to represent deep provenance.
January 25, 2025 at 7:11 AM
So a type annotation or a function call is not represented as "just text" – it is represented as a hyperlink to another object (the target type or function object). You probably don't need import statements because these links are resolved at edit time.
January 25, 2025 at 7:11 AM
Dynamic objects change over time or when you interact with them. But they still link to other objects (either static or dynamic).
In this world you dont have plain text languages. Programs are natively represented by a web of hypermedia objects.
January 25, 2025 at 7:11 AM
I personally want to see a native hyper-object OS. The core abstraction is a hypermedia object. It contains words interspersed with hyperlinks that link to other hypertext objects. Objects can be static or dynamic. Static objects are most similar to hypertext documents.
January 25, 2025 at 7:11 AM
Is SNOBOL's native pattern type similar to this? www.regressive.org/snobol4/docs...

But I don't know if it qualifies as general purpose.
A Snobol4 Tutorial: Chapter 4
www.regressive.org
January 25, 2025 at 6:42 AM