You are viewing archived messages.
Go here to search the history.

Pandi Lin 2026-02-03 10:31:22

One more clarification about the motivation.

Most end-user systems and programming models are still shaped by a

personal-computing assumption: one user, one machine, one isolated

environment.

It is normal for one individual nowadays to operate across 3 to 5 computers and

devices (for example a laptop, phone, tablet, and nearby or embedded

machines), and in many real situations several people and many computers

coexist in the same physical and social space. Computing is increasingly situated, shared and continuous,

rather than isolated.

At the same time, software built around personal computing makes it

cumbersome to actually use this abundance of devices and computers

together, or to let them meaningfully participate in the space and

situation we are physically inside in an infrastructural level.

What I am interested in is this question:

what would it look like if we built a programming language that provides a

single, shared and persistent environment across multiple peers?

Therefore this is an attempt to build such an environment as an infrastructure, and

to use it as a foundation for experimenting with different ways of

building, sharing and coordinating software in multi-device and social

settings.

Geert Roumen 2026-02-04 19:00:37

Sounds like a great motivation; and aligns very much with what I did for my master thesis geertroumen.nl/portfolio/index.php?page=action bringing devices people data and things together in the physical environment. I'm curious what your thoughts are on making the actual writing of the software also more multi-dimensional. In the example you showed it still remains typing in terminals; which is very individual and single device (even though the actions might connect to other devices).

📝 Arduino Action

A collaborative tool for physical computing in education

Pandi Lin 2026-02-05 19:44:07

Nice — I really liked your master thesis. I think it opens a very interesting angle on personal computation, especially how people, devices, data and physical situations become one shared computational environment. That connects very directly to what I’m trying to do.

Just to clarify one small detail about the demo video:

it is actually three independent peers, each running its own local instance and synchronised via Gun. It can scale to many peers in a LAN or across multiple devices. I only showed it on one machine because it’s much easier to demonstrate in a short video.

About your question on making the writing of software more multi-dimensional — that is exactly where my current focus is.

The terminal is only a temporary surface. What I’m really working on is the semantic layer.

In the same way that map / filter / reduce gave us a language to think about data transformation, and high-level languages let us describe computation without thinking about machine details, my goal is to build a higher-level language to describe distributed / decentralised computation itself — things like partial information, multi-directional dependencies, and cross-peer synchronisation as first-class concepts.

My hope is that once this layer is solid, genuinely multi-dimensional authoring interfaces (spatial, relational, multi-view) can grow naturally on top of it.

Paul Tarvydas 2026-02-03 21:03:42

I've been dissecting Forth Haiku, mentioned on the Handmade discord. This rabbit hole just strengthens my convictions about bloatware...

Here’s an uncomfortable truth: nearly all modern programming languages are essentially the same. They’re variants of CPU assembler—synchronous, sequential, and built around the function call paradigm.

Why Modern Software Is So Bloated

Paul Tarvydas 2026-02-03 21:15:03

I managed to leave out the diagram that was the main driver for this last article (thank you substack editor). If you read the article and didn't see a diagram, please look again.

Federico Pereiro 2026-02-04 12:28:39

Very interesting!

Different problems deserve different paradigms: message-passing for distributed systems, state machines for control flow, pure functional for calculations, Forth-like approaches for systems programming. You can’t cram all of that into one programming language and still get something that isn’t milquetoast. Instead of picking one language for a project, pick one language for each paradigm within the project. Create the solution in pieces, then glue them all together into a coherent whole.

I disagree with the takeaway. In my experience, any sufficiently large program will require most of these variants. Having it all under the same programming language can really help reduce complexity.

To me, the call+response paradigm is enough to express all of this elegantly. It all still boils down to sequences. An async call is something you either wait for (in the sequence, not the underlying thread) or that you fire and forget (in which case, you don't wait for).

Paul Tarvydas 2026-02-05 04:10:34

I disagree with the takeaway. In my experience, any sufficiently large program will require most of these variants. Having it all under the same programming language can really help reduce complexity.

Agreed about the large program vs. many paradigms. Change the phrase "programming language" to "programming development environment" and I agree. "Programming Languages" are just stone-age IDEs.

To me, the call+response paradigm is enough to express all of this elegantly. It all still boils down to sequences. An async call is something you either wait for (in the sequence, not the underlying thread) or that you fire and forget (in which case, you don't wait for).

I don't agree. I wrote a lot of compilers, RTOSs, embedded systems and driver code. Call+response is a clumsy paradigm for that kind of stuff. Something like StateCharts is much more suitable. There are probably other choices, too. When architecting asynchronous devices, you need architectural access to concepts like fan-out, control of routing, side-effects, etc. Call+response restricts your architectural choices too severely, causing you to go into a tailspin of inventing workarounds to appease the paradigm, instead of spending time solving the actual problems. All of the fancy stuff we've invented in the last 50+ year rabbit-hole is obviously useful, but, afaik, none of it was necessary for building MOAD.

📝 Statecharts papers we love video

Statecharts Papers We Love Video

Paul Tarvydas 2026-02-03 23:49:43

Trying to make a sketch of my opinion of what constitutes fun programming…

* Fun *

  • JIT type checking, Full REPL, GC

* Not Fun *

  • AOT type checking, manual memory management, manual type checking, stunted REPL

Make Programming Fun Again

Paul Tarvydas 2026-02-03 23:49:52

-

Paul Tarvydas 2026-02-03 23:50:21

Trying to describe an asynchronous system using reactive components programmed in the synchronous programming paradigm is too low level. We need a “GOTO Considered Harmful” moment in distributed programming.

Make Programming Distributed and Asynchronous Again

Paul Tarvydas 2026-02-03 23:50:32

-

Eli Mellen 2026-02-08 04:18:05

📝 Oatmeal - Constraint propagation for fun

I’ve been playing the very good Squeakross this weekend. It is adorable and the aesthetics are absolutely immaculate, but I’ve found the actual

Daniel Coutinho Ribeiro 2026-02-09 02:19:29

Hey fellas, just launche v0.3 of CReact alongside a new demo

Framework: github.com/creact-labs/creact

Demo: github.com/creact-labs/ai-powered-aws-website-generator