Closed marianoguerra closed 1 year ago
š® Coding as Game Playing šŖµ Chop Wood, Carry Water š§® Bronze Age Programming š§ Fluid Structured Programming
š¬ Nilesh Trivedi
It seems to me that the whole construct of functions as primitives that take arguments and produce results leads to boilerplate and duplication because it needlessly privileges arguments as "independent variables". I'll use an example to elucidate:
Take a rectangle of base b
and height h
. It's common to think of these as "independent" variables and define quantities like the following as "dependent":
perimeter(b, h) => 2*(b+h)
area(b, h) => b*h
diagonal(b, h) => sqrt(b^2+h^2)
But if I were to ask, what are the base and height of a rectangle whose area is a
and diagonal is d
, our programming languages have no tooling to do this (except the symbolic manipulation libraries for computer algebra). All the required information is there but we have privileged b
and h
over area
and diagonal
and thus, we now need to figure out the formula for side lengths and program it as the function sides(a, d)
I should be able to describe a structure, and auto-generate all possible functions (including for currying and partial applications, and while we are at it, all the partial derivatives with respect to each other) so that i can just declare what is known and what I want to calculate. A rectangle can then be represented with any set of variables that make everything else determinable. I should get access to all possible constructors like new Rectangle(area: a, diagonal: d)
.
And I want to see this be available for all programming tasks, not just algebra/math. For creating a graph, is the constructor new Graph(Nodes[], Edges[])
really the privileged one? Why not build languages in a way that I automatically get the constructor new Graph(AdjacencyMatrix)
and the instance methods graph.getNodes()
and graph.getEdges()?
š® Syndicate via Nick Smith
Traditional models of communication between devices, processes, and threads include message-passing, remote procedure calls, and shared memory. Here's a model I haven't seen before: shared game-playing .
How it would work:
The "game" could be an actual game like chess or Factorio (implemented via peer-to-peer communication), or it could be a standardized protocol like HTTP, FTP, or (most commonly) it could be an application-specific protocol that would normally be implemented via message-passing or RPC.
Imagine if this were the only model of communication that a programming language exposes. What if it were the "building block" of communication ā the only way to build concurrent systems? I think it's an intriguing thought š¤. I'm surprised I haven't heard this model proposed before.
(This post was inspired by Syndicate, which is an actor-based PL that eschews message-passing and RPC for the idea of a "data-space" that actors use to exchange information. But unlike my proposal above, Syndicate's data-spaces don't contain rules , and thus cannot be used to model video games or communication protocols.)
š¦ @gregor@c.im: It's been a while since I last tweeted about my fluid structured programming experiments:
Tofu is now a VSCode extension which makes your keystrokes more meaningful while keeping their original intent. Your code is formatted after every change,...
š§µ
š¦ @gregor@c.im: Time to talk about better developer experience through projectional code editing. I've been exploring this space in the last couple of years and here's a few things I either came up with or stole (hard to say at this point):
š All I want is one productivity app that can handle everything via Timothy Johnson
How many different productivity apps do you use for your daily work? Would it be possible to build one to rule them all?
Personally, I keep a weekly diary in OneNote to track most of my ongoing work. Somehow, knowledge work seems to resist being formalized into a single structured framework. (Or maybe that's just my own semi-scattered process.)
ā User Experience Manifesto via Konrad Hinsen
A "User Experience Manifesto" - for a small command-line utility!
Makes me wonder if the command line could become more mainstream if more tools were trying to be user-friendly.
š Programming Conference 2023 via Nilesh Trivedi
š„ The Most Complex Ecosystem in any Game via Kartik Agaram
Rain World
Interesting addition to our occasional conversation about animation techniques
š» Picotron Playground -- an experimental web-based edition of my WIP Fantasy Workstation via Nils Berg
Interesting, thereās a new machine in the PICO āecosystemā!
The FAQ sounds like Picotron is intended to be less of a toy, more of a tool: Picotron FAQ
š® I did Advent of Code on a PlayStation via Nils Berg
some interesting thoughts about programming in Dremas (PS4)
I havenāt played it myself, but even just watching others, the notion that every part of it is very smartly designed does come across.
[x] Change Month and Week Number
[x] focWeekExport "2022-01-19" "2022-01-26"
[x] Update Search Index
[x] Download New Attachments
[x] Update links
[x] Check that comment links work (push weekly dump with channel summaries)
[x] Check to mention right person for moved messages
[x] Summary
[ ] Hashtags
[x] Set title in newsletter
https://tinyletter.com/
https://tinyletter.com/marianoguerra/letters/
http://localhost:8000/history/
https://marianoguerra.github.io/future-of-coding-weekly/
https://stackedit.io/app#