https://github.com/nextjournal/clerk Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} nextjournal / clerk Public * Notifications * Star 208 * Fork 3 * Local-First Notebooks for Clojure storage.googleapis.com/nextjournal-snapshots/clerk/build/ fd79f7504ebffaa27958e4e05264b0ad2f650182/index.html ISC License 208 stars 3 forks Star Notifications * Code * Issues 1 * Pull requests 1 * Discussions * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 8 branches 0 tags Code Loading Latest commit @mk mk Update changelog and bump version ... fd79f75 Nov 4, 2021 Update changelog and bump version fd79f75 Git stats * 215 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .clj-kondo First cut of extensible viewers with lazy loading Oct 4, 2021 .github/workflows Setup static snapshot builds Nov 2, 2021 dev Fix for unbound top-level forms not picking up dependency changes Nov 4, 2021 notebooks Fix for unbound top-level forms not picking up dependency changes Nov 4, 2021 public First cut of extensible viewers with lazy loading Oct 4, 2021 src/nextjournal Fix for unbound top-level forms not picking up dependency changes Nov 4, 2021 stylesheets First cut of extensible viewers with lazy loading Oct 4, 2021 .dir-locals.el Move demo.lib ns out of main classpath May 17, 2021 .gitignore Build jar using tools.build Oct 7, 2021 CHANGELOG.md Update changelog and bump version Nov 4, 2021 LICENSE Add ISC License Nov 3, 2021 README.md Update changelog and bump version Nov 4, 2021 bb.edn Setup static snapshot builds Nov 2, 2021 build.clj Update to Clerk 0.2.209 Nov 3, 2021 chinook.db Add jdbc sample May 20, 2021 clerk.el First lazy loading impl for sequences Jun 10, 2021 deps.edn Enable lazy loading for description and combine with fetch Nov 2, 2021 package.json First cut of extensible viewers with lazy loading Oct 4, 2021 shadow-cljs.edn Only include devtools in dev build Nov 3, 2021 tailwind.config.js Move to non-jit compiled tailwind stylesheet Oct 6, 2021 View code Clerk Local-First Notebooks for Clojure Rationale Status Using Clerk Developing Clerk Known Issues README.md Clerk Local-First Notebooks for Clojure Clojars Project Clerk takes a Clojure namespace and turns it into a notebook: Clerk Screenshot Rationale Computational notebooks allow arguing from evidence by mixing prose with executable code. For a good overview of problems users encounter in traditional notebooks like Jupyter, see I don't like notebooks and What's Wrong with Computational Notebooks? Pain Points, Needs, and Design Opportunities. Specifically Clerk wants to address the following problems: * Less helpful than my editor * Notebook code being hard to reuse * Reproduction problems coming from out-of-order execution * Problems with archival and putting notebooks in source control Clerk is a notebook library for Clojure that aims to address these problems by doing less, namely: * no editing environment, folks can keep using the editors they know and love * no new format: Clerk notebooks are regular Clojure namespaces (interspersed with markdown comments). This also means Clerk notebooks are meant to be stored in source control. * no out-of-order execution: Clerk notebooks always evaluate from top to bottom. Clerk builds a dependency graph of Clojure vars and only recomputes the needed changes to keep the feedback loop fast. * no external process: Clerk runs inside your Clojure process, giving Clerk access to all code on the classpath. Status ALPHA, expect breaking changes. Using Clerk To use Clerk in your project, add the following dependency to your deps.edn: {:deps {io.github.nextjournal/clerk {:mvn/version "0.2.214"}}} Require and start Clerk as part of your system start, e.g. in user.clj: (require '[nextjournal.clerk :as clerk]) ;; start Clerk's buit-in webserver on the default port 7777, opening the browser when done (clerk/serve! {:browse? true}) ;; either call `clerk/show!` explicitly (clerk/show! "notebooks/rule_30.clj") ;; or let Clerk watch the given `:paths` for changes (clerk/serve! {:watch-paths ["notebooks" "src"]}) ;; start with watcher and show filter function to enable notebook pinning (clerk/serve! {:watch-paths ["notebooks" "src"] :show-filter-fn #(clojure.string/starts-with? % "notebooks")}) You can then access Clerk at http://localhost:7777. See the /notebooks folder in the Clerk repository for a number of sample notebooks. Developing Clerk Make sure you have Babashka installed, and run: bb dev The will start everything needed to develop Clerk. You can connect your favorite editor to it using nREPL. Known Issues See notebooks/onwards.clj. About Local-First Notebooks for Clojure storage.googleapis.com/nextjournal-snapshots/clerk/build/ fd79f7504ebffaa27958e4e05264b0ad2f650182/index.html Resources Readme License ISC License Releases No releases published Packages 0 No packages published Contributors 6 * @mk * @kommen * @zampino * @joe-loco * @Heliosmaster * @jackrusher Languages * Clojure 98.1% * Other 1.9% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.