Shalabh's Avatar

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?

55
Followers
62
Following
27
Posts
21.11.2024
Joined
Posts Following

Latest posts by Shalabh @shalabh.com

Agree English isn't great for this. LLMs change the equation for English <-> code translation. You could have a prog system designed for LLM/human hybrid editing. This is where I feel research is valuable. LLMs still rely on 'hard logic' for correctness source of truth, but help comprehension.

16.02.2026 20:24 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

The open access version of Cultures of Programming is now available online. Just in time for the holiday break!

Read it here: www.cambridge.org/core/books/c...

If you prefer a real book, use PETRICK26 for a 20% discount (valid until January 31) at: www.cambridge.org/9781009492348

19.12.2025 10:18 ๐Ÿ‘ 42 ๐Ÿ” 13 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 1
Konrad Hinsen's blog

New blog post: "Going for robustness"

https://blog.khinsen.net/posts/2025/03/05/going-for-robustness.html

05.03.2025 08:46 ๐Ÿ‘ 5 ๐Ÿ” 7 ๐Ÿ’ฌ 2 ๐Ÿ“Œ 0

Thank you I appreciate the links!

03.03.2025 20:44 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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`.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

03.03.2025 06:35 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

I quite liked this talk โ€“ sets up a clear perspective on how to look at consensus protocols. I didn't find Raft all that simple anyway (but I also bias towards leaderless consensus).

03.03.2025 06:35 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Negative transfer (memory) - Wikipedia

Negative transfer of learning?
en.wikipedia.org/wiki/Negativ...

01.03.2025 06:58 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Preview
SPLASH 2025 - Onward! Papers - SPLASH 2025 Onward! is a premier multidisciplinary conference focused on everything to do with programming and software: including processes, methods, languages, communities and applications. Onward! is more radi...

Please submit to Onward! papers and essays. One of the best places to publish ambitious non-mainstream ideas on programming.

2025.splashcon.org/track/splash...
2025.splashcon.org/track/splash...

19.02.2025 01:26 ๐Ÿ‘ 8 ๐Ÿ” 9 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
GitHub - Instagram/MonkeyType: A Python library that generates static type annotations by collecting runtime types A Python library that generates static type annotations by collecting runtime types - Instagram/MonkeyType

Not a live system but tangentially related: github.com/Instagram/Mo...

12.02.2025 20:36 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Has anyone ever heard of a live programming system that uses the types of dynamic values to feedback into static analysis?

12.02.2025 18:25 ๐Ÿ‘ 17 ๐Ÿ” 4 ๐Ÿ’ฌ 5 ๐Ÿ“Œ 0
Preview
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...

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!

11.02.2025 21:02 ๐Ÿ‘ 1 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Hi, I'm curious what you think has held cython back?

09.02.2025 23:00 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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.

25.01.2025 07:11 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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.

25.01.2025 07:11 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

25.01.2025 07:11 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

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.

25.01.2025 07:11 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Most hobby OSes and OS courses mimic the Unix model with a "filesystem", "executables", "processes", "byte streams" and such. This is unfortunate. The design space to explore new core abstractions here is so much bigger.

25.01.2025 07:11 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
A Snobol4 Tutorial: Chapter 4

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.

25.01.2025 06:42 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Wow this is neat!
Here's the original youtu.be/495nCzxM9PI?...

08.01.2025 06:07 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

How does one introduce a substrate without building an operating system?

03.01.2025 18:05 ๐Ÿ‘ 7 ๐Ÿ” 2 ๐Ÿ’ฌ 9 ๐Ÿ“Œ 0

Yeah, I guess it would.

09.12.2024 22:34 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

I agree that compuation is about viewing/ interpreting properties of a system target than intrinsic. Another philosophy question, what is interpretation? Can any system interpret or what is special about our brains?

07.12.2024 15:56 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

The question should be whether we can have a programming system that is version aware across all core abstractions.

22.11.2024 03:56 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0