I made a thing: <colbyrussell.com/LP/debut/plai>

Ostensibly it's implementation of a (really crummy) assembler, but the true purpose is to showcase a (proposed) new form of media—an alternative take on literate programming that exploits the natural features of the Web browser instead of requiring special purpose tools and is inspired by the pragmatics of the design of Markdown.

ping @paul @akkartik

Blog post forthcoming.

@paul @akkartik this is probably not the best introduction for it, though, considering the fact that it's a working program is supposed to be a surprise encountered at the end. So it's a bit of a spoiler.

Show thread

@paul @akkartik having said that, I don't offer this as a great example of a literate program; most of it is uncommented. I just wanted to get this out there, because I've had this idea for a while and wanted to publish it. It's taken too long, and I'm kind of sick of it by now (a lesson—what the real takeaway of this experiment should be—?)

Show thread

@colby there's definitely fertile territory exploring the medium of HTML and hypertext in general. Knuth just didn't have those, print was most sensible medium at the time to target.

Very clever to use the facilities already existing in a browser.

Looking forward to future progress. I'd love to see more examples of this LP system.



@paul @akkartik great comment by dhosek on HN about code reading ("clubs") and the relationship to LP <news.ycombinator.com/item?id=2>

This (esp. "the biggest challenge is just finding a starting point") matches the lessons I've internalized over the last ~3 years. My main takeaways whether you're doing proper LP or not, is that just like a book you:

1. need to provide an obvious place to start, and
2. should write code top-down (see also <teamten.com/lawrence/programmi>)

@paul @akkartik imagine being given the manuscript for a book and then having to suss out (e.g. by guessing) which chapter to start with. This is the ordinary state of affairs in programming, and it's pretty nuts that we haven't done anything about it by now in the mainstream.

The closest we get are *maybe* some attempts in the README, but more often than not it comes down to conventions for the particular language/ecosystem that you're expected to know.

@colby Thanks for the link! I might well have missed it.

I agree with 1, but not 2. Top-down and bottom-up are not the only two options here. I currently present Mu syntax in a combination of top-down and bottom-up: github.com/akkartik/mu/blob/ma There are infinite ways to "tour" a system.

Step-wise refinement is one powerful option that seems easy to conflate with top-down and so forget. It has some commonality with Christopher Alexander's ideas about unfolding: davesresearch.medium.com/weekn


@colby I really like how dhosek calls out modularization as a complicating factor in controlling a narrative. These days a compiler cache is a great way to autogenerate headers without giving up the benefits of incremental compilation. Nonlinear organization can be nice but is a *lot* of work. It helps to avoid it as much as possible.


Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!