Creative Commons is great for text. It's not great for code. Literate programming is both.
CC-BY-SA-4.0 is one-way compatible with GPL-3.0. License a whole doc as CC-BY-SA-4.0, and both are neatly covered. But if you include non-trivial GPL-3.0 code into your literate program (hello, Emacs!), the doc needs two licenses or one awkward one. And so many Emacs configs are GPL, it's hard to avoid.
#creativecommons #gpl #literateprogramming #emacs
For over 40 years, we have recognised the value of #Knuth's #LiterateProgramming. With all the expedient complexity that dominate #IT today, it is perhaps time to revive a tried, tested, and trued old idea of reversing the roles of #comment and #code.
All source files in all languages should be a \(\texttt{.latex}\) or \(\textt{.md}\) text document, interspersed with snippets of code ensconced in demarcated code blocks. Academics habitually use \(\LaTeX\), and IT practitioners commonly use Markdown.
This convention was already in place in way back in the early days of Haskell (proposed by Richard Bird). And today, we use it as a matter of course when using Mathematica and Jupyter.
It is time all programming languages adopt this sensible conventionβno, not foist it upon an average coder, but make it convenient for the programmer who wants to follow this convention.
#code #comment #it #literateprogramming #knuth
Is there a solution to load a #nix env for a single #emacs buffer from an arbitrary file?
I'd like to be able to define an environment for a specific #OrgMode file (within #OrgRoam, so in a flat file structure), which would (ideally) tangle a `shell.nix` to the `org-attach-id-dir`, and be loaded into the buffer with some elisp code.
I'd use this, e.g., for taking #literate #pkm notes on programming languages and packages. But being able to define a run environment within #literateprogramming, esp for #reproduciblescience, sounds quite generally useful though.
The basics seem to be in `nix-buffer`, `emacs-direnv` and `envrc.el`, but they all seem to require a directory-specific environment rather than an arbitrary nix file.
#reproduciblescience #literateprogramming #pkm #literate #Orgroam #orgmode #emacs #nix
These days, everyone and their grandmama are writing #DataScience code snippets (or generating them using ChatGPT). Good for them.
But they who do not develop enterprise-grade software or implement life-critical systems should just use #Jupyter, #Mathematica, or similar #LiterateProgramming environments, instead of mucking about with IDEs, compilers, build systems, CI/CD pipelines, containers, and all that jazz.
For internal-use software, literate programming offers many advantages, especially to those who do not write #programmes habitually. The live notebook is both the information repository and the information presentation medium. And it encourages the script writers to document their code. Typically, live notebook coders are also the users, so it behooves them to keep the whole documents, not just the code snippets, up-to-date.
The collection of live notebooks serve not only as a code repository but also as an institutional knowledge base, thereby preserving, refining, and multiplying the intellectual property of the organisation.
And most enterprise applications developed for internal use have horrid user interfaces, be they Gnome or Tcl/Tk or React or Angular. It is more aesthetically pleasing and more intellectually appealing to have live notebooks as the canonical user interfaces.
#programmes #literateprogramming #mathematica #jupyter #datascience
An analogy from a colleague: @mystmarkdown vs. #Quarto is the vim vs. emacs of #OpenScience #LiterateProgramming π€
@Posit I don't want to pick sides!
#Jupyter #rstats #Python
CC @rgaiacs
#Python #rstats #jupyter #literateprogramming #openscience #Quarto
https://slott56.github.io/2023-07-18-literate_programming_with_pyweblp.html
I (finally) put this up on PyPI.
I have a low key quest to find a modern "true" #LiterateProgramming environment that lets you write in the order that makes sense for humans (e.g. some less interesting functions defined in an appendix, overall algorithm structure introduced first and then key parts fleshed out later) while assembling the source code into the order it's needed to execute (e.g. functions defined before they're used).
I run across this interesting site simply called Literate Programming:
http://www.literateprogramming.com
It provides lots of quotes of books and papers about literate programming and software documentation, as well links to tools and resources.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
#programming #quotes #literateprogramming
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
After a long time, literate programming with Emacs org-mode and GNU Guile and Geiser is working again on my system, yay! I was too lazy to apply a fix and basically waited out the issue, until it got solved upstream.
Time to continue working through The Seasoned Schemer.
#programming #guile #scheme #learning #emacs #orgmode #literateprogramming
#programming #guile #scheme #learning #emacs #orgmode #literateprogramming
does anyone know of any writing on the topic of #LiterateProgramming that opposes the #WEB weave & tangle paradigm in favor of a comments based approach?
Timothy Daly on #LiterateProgramming. To me this talk thoroughly explains the motivation of literate #Programming - and itβs good fun to watch.
Now, if I ever manage to actually DO it - everywhere I go we (including me!) still seem stuck with mediocre documentation and some testing. Both of which are not literate programming.
#literateprogramming #programming
Hi #guix and #literateprogramming #emacs guys, a new interesting to test : https://simfish.dev/projects/gix/
#guix #literateprogramming #emacs
@dekkzz76 Ah, I've been there in other contexts. Then I nuked the .bash_history somehow, took far too long to recover the ad-hoc commands I used (I think I had to reach in my backups for some of them) and decided to start adding such management commands either to #LiterateProgramming #OrgMode files with inline documentation or just make them into #Elisp commands directly.
I've also used #Ansible in conjunction with that workflow.
#emacs #literateprogramming #orgmode #elisp #ansible
Oh... someone says that #gnu + #guix + #emacs = #gix ?
I'm gonna see how far can i get inspired by this beautiful blogpost, talking about #containers, #literateprogramming with #babel #orgmode blocks and much more! ...
#gnu #guix #emacs #gix #containers #literateprogramming #babel #orgmode
#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 https://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 https://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 https://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 https://thi.ng/umbrella monorepo...
#releasesunday #opensource #clojure #clojurescript #literateprogramming #orgmode #typescript
@remi I hear you, there!
I don't do the "holy wars" either when it comes to tooling, or editors. Use what works for, whatever tickles the fancy.
I really stink at taking notes too - some of these people who write about these systems just amaze me!
I've used some #org tools for generating homework papers, but that's honestly probably about as far as I'll get. My life just isn't organized.
Though I really like #LiterateProgramming π
@hsorlie π―
This is one of the most frequent questions I get when teaching #OpenScience tools like #git and #literateprogramming:
*How can I collaborate with the people unwilling/too busy to learn these tools?*
Happy to discuss any time with anyone who has good answers :blobcatgoogly2:
#openscience #git #literateprogramming