Interested in the roots of design
Posts
It turns out that the ugly convention of completing a command input with two Return characters (as found in AutoCAD, for example) is a TECO-ism.
In TECO, you're building a (possibly empty) command string (approximately, a list of commands).
In Autocad this convention usually has the flavour of terminating a list of items with an empty item, so it's a kind of in-band signalling.
This feature (custom emojis on the Fediverse) was news to me: https://codeberg.org/fediverse/fep/src/branch/main/fep/9098/fep-9098.md
This article answers some questions I had about actually programming the Connection Machines. Mostly I was curious about routing and contention.
https://dash.harvard.edu/server/api/core/bitstreams/7312037d-d17c-6bd4-e053-0100007fdf3b/content
If someone follows nobody on Github I just assume they're a raging egotist, same as I would if their social media profile looked like that.
Deposit Return Schemes (for bottle recycling) are surprisingly tech-heavy. Instead of the RVM dispensing a physical token or charging up a card, it prints a simple paper voucher and informs a central database that it has done so. An EPOS then has to contact the same database when the voucher is redeemed.
An alternative system, "Digital DRS", puts unique codes on containers which are scanned by the consumer for instant credit (they must then recycle the container?) https://re-universe.com/our-projects/digital-drs/
"A more nuanced approach would differentiate between a function that just happens to be written in a different language, and one that actually performs an effect."
This is very suggestive to me. It reminds that you can have a procedure that uses mutable state, or even one in a really hairy imperative language, but have it provide a pure interface (as with Haskell's ST). A quicksort function, for example.
The statement "the model was wearing an expensive dress" has an opaque reading, where the speaker is assumed to know nothing more about the dress. It also has a transparent reading, where the speaker is assumed to have a particular dress in mind. There's also a middle case where the speaker knows that the model tried on several expensive dresses, but doesn't know which one they were wearing at that moment. It's a restriction of the set of possibilities. https://people.umass.edu/partee/MGU_Web_13/materials/Handout-Kusliy_1up.pdf
I like this taxonomy of side effects (intolerable, neutral, beneficent) from https://archive.org/details/principlesofprog00jack/page/124/mode/2up
What would be the closest analogue of Core War on the Harvard architecture? (https://en.wikipedia.org/wiki/Core_War)
RE: @theohonohan@graphics.social
Another 1k employees gone, including at least one senior functional programming guy.
NixOS radically simplifies configuration management using very old lessons from functional programming.
Meanwhile. version control for programmers, which necessarily models mutable state, continues to absorb huge amounts of programmer attention – they're usually focused on expressiveness and simplicity of tools, when the real problem to be solved is coordination of human processes, which is both easier (it doesn't ramify into complexity) and less tractable (programmers may be in conflict).
I've recently started using jj to version the little coding experiments I work on.
Whenever I come back to the code I try running it, and then, if it works, use "jj new" to 'bank' that version. The risk that the working copy is in a broken state seems to be something that must be checked and that only good processes can avoid. Maybe I should be calling "jj new" as the last thing I do before walking away, but that seems counterintuitive.
ChatGPT: "You have written code that relies on the identity (cos A + i sin A)^k = cos(kA) + i sin(kA), so I'm going to assume cos(kA) = cos(A)^k"