shakedown.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A community for live music fans with roots in the jam scene. Shakedown Social is run by a team of volunteers (led by @clifff and @sethadam1) and funded by donations.

Administered by:

Server stats:

264
active users

#literateprogramming

0 posts0 participants0 posts today

#programming #systemsProgramming #software #commonLisp #sitcalc #emacs #eepitch

screwlisp.small-web.org/comple

I relate #Sandewall's call for situation calculus actions and the shared environment / database to be moved into the kernel viz my #literateProgramming emacs useage.

People always said emacs /was/ the operatingsystem, didn't they.

Particularly, computer programs various send requests for actions to the emacs server where they are also seen playing out at they actually happen in real time.

screwlisp.small-web.orgMy eepitch-send, actions and the situation calculus

@mdhughes
What were you sharing about your conversations with Knuth viz #literateProgramming or otherwise? Were you saying that it was specifically in the context of his book that web was important?

The way eev resolves repl vs literate is that you only write in your literate document, and the repl updates on the other half of the screen without your cursor entering it.

#programming #softwareEngineering article screwlisp.small-web.org/progra #commonLisp #asdf #systemsProgramming #series #pathnames #packaging

Really simple... Sort of... But so intricate to write. I deal with (writing a smidge of #interactive #lazyEvaluation #functionalProgramming ) :

- Tangling markdown into an asdf :class :package-inferred-system lisp system
- Doing so with scan-file and collect-file from series
- Working with lisp’s make-pathname directories.

screwlisp.small-web.org:screwlisps-knowledge/tangle common lisp asdf package markdown tangling and lisp pathnames
Replied in thread

⬆️ @palmin

Interesting juxtaposition of #Sudoku and #Knuth. Remarkable how the order is completely reversed in the modern programmers' #hierarchyOfNeeds

1. Get paid for computer programming

2. Even make your programs do useful work — May be sudoku grid from a dependency graph qualifies

3. Embrace #LiterateProgramming —Make well-written programs FUN to read.

No #TeXLaTeX, but my #Swift toolchain does supports #Markdown in code comments to capture joy for posterity

www-cs-faculty.stanford.edu/~k

Continued thread

Some more info & illustration of the lens axis used above (excerpt from the #LiterateProgramming source code of the much older #Clojure version of thi.ng/viz)

This axis type uses circular interpolation to create the non-linear mapping:
docs.thi.ng/umbrella/math/func

There will also be an alternative/similar version using the generalized Schlick formula:
docs.thi.ng/umbrella/math/func

Source code link of the animation below:
github.com/thi-ng/geom/blob/fe

Rather than considering even just once the needs & massive benefits for creators and maintainers, current open source software infrastructure, support tools, but also developer culture itself is completely biased and optimized purely for the benefit of consumers/users. Choosing a non-standard project structure (in my case a mature Google-style monorepo with almost 200 largely independent, but related projects/libraries/tools) is increasingly actively punishing my work and efforts in a variety of ways, e.g.

- non-supportive UIs for improved browsing/overviews of monorepos
- harmed discovery via search & metadata limitations
- wrong, misleading and downgraded project ranking calculations (npm)
- misleading/broken automated project analysis (GitHub)
- lack of support by documentation tooling (TypeDoc)
- lack of support by package managers (Zig) and/or hosting platforms

All of these (and more) factors are actively hurting, disqualifying & even completely nullifying much of my time & energy spent on these projects, making my dream goal of working on open source fulltime increasingly intangible (because the above factors all have an actively downgrading effect which makes these project seem lower quality/relevance). To some extent this is purely because this work is stored in a project structure which is optimized for maintenance & automation. Technically, we're speaking about _one_ additional level of nesting. An extra subdirectory! Otherwise, not any different than a "normal" repo. Still — BOOM — confusion, inflexibility & punishment ensues! 😫😭

So many external aspects and people do not give a damn that a monorepo setup like this and the custom tooling created to automate the maintainance and cross-linking of all these ~360 packages (incl. example projects) are _the only sane way_ for me as a single person to efficiently manage & release a codebase of this magnitude.

I was aware of some misunderstandings about monorepos on purely social/human level, but never saw it coming that the more I was expanding and deepening this work, the more this structure and scope would hurt the project & my goals, because 3rd party infrastructure is just as weirded out by such a "blasphemy" as some people are...

I'd genuinely like to hear ideas what I could/should do to escape the vicious circle created by the above factors, which is a real motivation killer... I really do wonder how other maintainers (esp. would like to hear from indie devs)
handle projects & codebases of this scale without running into these issues...

Thank you for any insights!

Ps. I really seem to have a feeble for "think different" and going against the grain with these things (or maybe being too early?). The first set of 20+ thi.ng libraries for Clojure/ClojureScript were mostly written in a #LiterateProgramming format, often combining source code with diagrams & tables — this too led to many complaints and was partially to blame for not gaining much traction, even though these projects were singular offerings to that language community at the time (and funnily only became more popular _after_ 6-7 years, once I'd already left Clojure behind... go figure!)

thi.ngOpen source building blocks for computational design. Est. 2006thi.ng is a set of ~350 complementing code libraries & projects, a long-term effort devoted to Computational Design in its many forms.

Has anyone on here written any software using #LiterateProgramming? If yes, what tools did you use? Did they work well, and would you recommend them?

I've been fascinated by the concept ever since Inform 7 was released as open source, with its own literate programming toolset. @zarfeblong quotes, "...no one has yet volunteered to write a program using another's system for literate programming." blog.zarfhome.com/2022/04/info

Did you write your own literate programming software?

Zarf UpdatesInform 7 open-source releaseToday is the traditional Inform 7 birthday. Okay, April 30 may be more traditional, but close enough. The point is, today Graham posted the full source code for a new release of Inform 7. Here is his announcement forum post. This is tagged as ...

#ThingUmbrella readme/example tip: If you've got a local clone of the Git repo[1] and have everything built (via `yarn build`), you can then run: `yarn doc:readme` to re-generate the readme files of all packages and extract various code examples[2] into runnable TypeScript source files.

In #LiterateProgramming parlance this process is called "tangling" and here is handled by thi.ng/tangle, which you can of course use for your own projects/documentation/literate programming too! The tangled source files are written in the `export` folder of each eligible package and can then be (usually) directly run from the terminal using `bun` (bun.sh), e.g. like so:

`bun packages/text-canvas/export/readme-barplot.ts`

Just thought this might be useful for some of you...

[1] github.com/thi-ng/umbrella/blo

[2] So far there're only ~28 packages (15% of the total) for which I've updated the readmes with this mechanism. I'm hoping by end of the year all of them will be ready...

I got this wild hare to make a simple version of Knuth's Literate Programming in Ruby. How small could it be? Turns out 35 lines (not golfed) gives you quite a bit. 💎

YES, it includes out-of-order source, so it's a "real" literate programming system (I eagery await your ire, LOL) and YES, the final program is written in itself.

ratfactor.com/repos/rubylit/

ratfactor.comrubylitA literate programming system in 35 lines of Ruby

"Some explanations can, will, and should be written by code authors alone, or by those authors in partnership with LLMs. Others can, will, and should be conjured dynamically by code readers who ask LLMs for explanations on the fly."

thenewstack.io/how-to-use-llms

The New Stack · How to Use LLMs for Dynamic DocumentationSome explanations should be written by code authors. Others may best be generated on the fly by LLM-assisted code readers.
Replied in thread

@neauoire Not Petri nets, but related if you're into that kind of graph based computation approach... I was (still am) very fond of the Signal/Collect programming model (which also can drastically simplify the implementation and parallelization of various types of algorithms):

cs.cmu.edu/~wcohen/postscript/
semantic-web-journal.net/syste

FWIW (as more concrete reference with more examples/diagrams) my own #LiterateProgramming #Clojure implementation & interpretation of some of these ideas is here:

thi.ng/fabric

Replied in thread

@designfactotum Absolutely! Reproducibility, also in terms of enabling others (and future self) to understand/follow certain design decisions in software was one of the reasons why I spent several years practicing #LiterateProgramming, e.g. resulting in source code like this:

github.com/thi-ng/fabric/blob/
github.com/thi-ng/fabric/blob/

Unfortunately, I had to give up on this due to switching languages/tooling and also because of pushback from potential contributors. As an alternative, I've been trying (occasionally) to use ADRs[1], but need to get back more into the habit of it, and reserve bandwidth/time for those... Looking at other large #OpenSource projects, as an outsider/novice it's hardly ever sufficient to just have access to the source code (and/or docs) without also having some understanding why or how key factors/decisions/patterns where used/arrived at... These aspects are hardly ever documented

IMHO the strong coupling of source code, version control, IDEs/build tools and filesystems (rather than say a block based/notebook-style approaches) is one of the biggest issues to overcome in moving software dev forward towards more reproducibility & future introspection...

Slight tangent: More software will be globally generated via LLMs/autopilots, whose generated code will eventually (if not already) be treated as black boxes, at large. People/industry will build new houses/towers of cards and use layers of infrastructure (mud) to try to manage that mess (aka sweep it under the rug), but one of the biggest issues I can already foresee is a vastly increased lack of reasoning powers and debuggability with these approaches, in addition to the unavoidable & unpredictable emergent interactions resulting from designing complex software systems indirectly via natural language prompting...

[1] Architecture Decision Records - github.com/joelparkerhenderson

GitHubfabric/core.org at master · thi-ng/fabricSignal/Collect inspired compute graph infrastructure for Clojure & Clojurescript - fabric/core.org at master · thi-ng/fabric

#ReleaseSunday Good things come to those who wait... After 10+ years, incl. 4+ years of release candidates and now prompted by a recent PR by @dimovich, earlier today I've released thi.ng/geom-clj v1.0.0 proper — a large, comprehensive #opensource 2D/3D geometry toolkit for both #Clojure & #ClojureScript. It's a massive project with too many features to list here, see readme & attached images for a partial list...

This was the first public project under the thi.ng moniker and from 2011-2016 I worked almost daily on it (though in it's current form it's the 4th rewrite). It also was the first project for which I decided to adapt a #LiterateProgramming process, using Emacs #OrgMode, allowing me to develop and intersperse source code with prose, sections, table of contents, reference/research links, tasks, diagrams, visualizations, tables & parametric code templates. Amazing productivity booster & dearly missed since... I continued using LP for several other large thi.ng libraries (most notably thi.ng/fabric), but in 2018 I decided to give up, since it proved to be a major hurdle for 3rd party contributions... 😢

In hindsight, the project, design and learnings from Clojure heavily inspired and directly expanded into my later (current!) #TypeScript work and the group of 20 new libraries under the same name (i.e. see thi.ng/geom). The latter is _not_ a direct port and currently still has a much stronger focus on 2D, yet again is one of the largest groups of libraries in the entire thi.ng/umbrella monorepo...