Literate programming is much more than just commenting code

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • leo-editor

    Leo is an Outliner, Editor, IDE and PIM written in 100% Python.

  • srcweave

    A literate programming system for any language.

  • Iā€™d like to see a literate programming version of GitHub where the community standardizes around an eminently-readable Markdown-like syntax. srcweave [1] looks like a great start.

    [1]: https://github.com/justinmeiners/srcweave

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • tanglemd

  • IMHO the two biggest problems I find with existing tools are that they assume the documentation is the source of truth and that the tangling will leave artifacts in code. Both of these make them poorly suited to the sort of projects that most of us work on, I'm not Knuth writing a dead tree tome but I would like some better ways to add documentation to existing projects and have to integrate with others.

    I wrote a PoC of a tangling tool that worked through "virtual" files and had a syntax aware handler, there's enough information that it could possible work with language servers too, but sadly I haven't had time to take things further: https://gitlab.com/lusher/tanglemd

  • marginalia

    Ultra-lightweight literate programming for clojure inspired by docco (by clj-commons)

  • RawParser

    Showing how a grammar driven parser can be implemented

  • I have started working on a program that can parse Markdown files with fragments of C code and weave those fragments into a C program that can be compiled. For an example input, see https://github.com/FransFaase/RawParser#documentation

  • sicmutils

    Computer Algebra, Physics and Differential Geometry in Clojure.

  • - multiple stories about the same piece of code, but all with the ability to IMPORT the story as a library

    I've been writing sicmutils[0] as a "literate library"; see the automatic differentiation implementation as an example[1].

    A talk I gave yesterday at ELS demos a much more powerful host that uses Nextjournal's Clerk to power physics animations, TeX rendering etc, but all derived from a piece of Clojure source that you can pull in as a library, ignoring all of these presentation effects.

    Code should perform itself, and it would be great if when people thought "LP" they imagined the full range of media through which that performance could happen.

    [0] sicmutils: https://github.com/sicmutils/sicmutils

    [1] autodiff namespace: https://github.com/sicmutils/sicmutils/blob/main/src/sicmuti...

    [2] Talk code: https://github.com/sritchie/programming-2022

    [3] Clerk: https://github.com/nextjournal/clerk

  • programming-2022

    Talks at the <Programming> 2022 Conference in Porto, Portugal

  • - multiple stories about the same piece of code, but all with the ability to IMPORT the story as a library

    I've been writing sicmutils[0] as a "literate library"; see the automatic differentiation implementation as an example[1].

    A talk I gave yesterday at ELS demos a much more powerful host that uses Nextjournal's Clerk to power physics animations, TeX rendering etc, but all derived from a piece of Clojure source that you can pull in as a library, ignoring all of these presentation effects.

    Code should perform itself, and it would be great if when people thought "LP" they imagined the full range of media through which that performance could happen.

    [0] sicmutils: https://github.com/sicmutils/sicmutils

    [1] autodiff namespace: https://github.com/sicmutils/sicmutils/blob/main/src/sicmuti...

    [2] Talk code: https://github.com/sritchie/programming-2022

    [3] Clerk: https://github.com/nextjournal/clerk

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • clerk

    āš”ļø Moldable Live Programming for Clojure

  • - multiple stories about the same piece of code, but all with the ability to IMPORT the story as a library

    I've been writing sicmutils[0] as a "literate library"; see the automatic differentiation implementation as an example[1].

    A talk I gave yesterday at ELS demos a much more powerful host that uses Nextjournal's Clerk to power physics animations, TeX rendering etc, but all derived from a piece of Clojure source that you can pull in as a library, ignoring all of these presentation effects.

    Code should perform itself, and it would be great if when people thought "LP" they imagined the full range of media through which that performance could happen.

    [0] sicmutils: https://github.com/sicmutils/sicmutils

    [1] autodiff namespace: https://github.com/sicmutils/sicmutils/blob/main/src/sicmuti...

    [2] Talk code: https://github.com/sritchie/programming-2022

    [3] Clerk: https://github.com/nextjournal/clerk

  • rust-jmdict

    Rust library for access to the JMdict

  • I had an instance of this where I built up a rather contrived data structure over time and ended up putting what is basically a blog post into the repo to explain the history of that data structure: https://github.com/majewsky/rust-jmdict/blob/main/CONTRIBUTI...

  • zx

    A tool for writing better scripts

  • I am not a big fan of the complex literate programming style involving code-generation which this article talks about.

    But I recently discovered that Google's zx [1] scripting utility supports executing scripts in markdown documents and I combined it with httpie [2] and usql [3] for a bit of quick and dirty automation testing and api verification code and it worked out pretty well.

    [1] https://github.com/google/zx#markdown-scripts

    [2] https://github.com/httpie/httpie

    [3] https://github.com/xo/usql

  • httpie

    šŸ„§ HTTPie CLI ā€” modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. (by httpie)

  • I am not a big fan of the complex literate programming style involving code-generation which this article talks about.

    But I recently discovered that Google's zx [1] scripting utility supports executing scripts in markdown documents and I combined it with httpie [2] and usql [3] for a bit of quick and dirty automation testing and api verification code and it worked out pretty well.

    [1] https://github.com/google/zx#markdown-scripts

    [2] https://github.com/httpie/httpie

    [3] https://github.com/xo/usql

  • usql

    Universal command-line interface for SQL databases

  • I am not a big fan of the complex literate programming style involving code-generation which this article talks about.

    But I recently discovered that Google's zx [1] scripting utility supports executing scripts in markdown documents and I combined it with httpie [2] and usql [3] for a bit of quick and dirty automation testing and api verification code and it worked out pretty well.

    [1] https://github.com/google/zx#markdown-scripts

    [2] https://github.com/httpie/httpie

    [3] https://github.com/xo/usql

  • Redis

    Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.

  • pytudes

    Python programs, usually short, of considerable difficulty, to perfect particular skills.

  • Yes I agree (and share the hope). In fact, earlier today I was thinking about Peter Norvig's "pytudes" (https://github.com/norvig/pytudes) as good examples of literate programming ā€” and they are notebooks. Also, last weekend I picked up some code I had written a few months ago, threw it all away and started writing it in a notebook (Colab) precisely for this "literate programming" reasons.

    There's also "nbdev" (https://github.com/fastai/nbdev) which seems like it should be the best of both worlds, but I couldn't quite get it to work.

  • nbdev

    Create delightful software with Jupyter Notebooks

  • Yes I agree (and share the hope). In fact, earlier today I was thinking about Peter Norvig's "pytudes" (https://github.com/norvig/pytudes) as good examples of literate programming ā€” and they are notebooks. Also, last weekend I picked up some code I had written a few months ago, threw it all away and started writing it in a notebook (Colab) precisely for this "literate programming" reasons.

    There's also "nbdev" (https://github.com/fastai/nbdev) which seems like it should be the best of both worlds, but I couldn't quite get it to work.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts