6 Comments
May 10, 2021Liked by Sam Ritchie

Hey Sam! Thanks for writing this up, I find it quite fascinating! I was curious what is the state of the project these days? 🙂 Did you ever get any traction on prototyping this in Roam?

Expand full comment
author

Hey Vlad, I continue to soldier away here... I have a full computer algebra system in the browser, now, which is now natively available in a few environments, including Nextjournal. See http://nextjournal.com/try/sicm/ex-1-18 and http://nextjournal.com/sicm for a couple of examples.

All of this work is compatible with Roam's codebase, so getting it fused in to a system with backlinks etc should be feasible now, much more so than when I wrote this.

I'm currently working on a graphical frontend, so that I can drive animations and simulations from these executable code boxes. That is probably the final piece of the puzzle before I buckle down and start writing up all of this work!

Thanks for the comment and your interest, Vlad. What are you working on these days?

Expand full comment

Hi Sam,

a very interesting project that's on my list of work to follow. Looking forward to playing with your prototype when it's ready! I'll also have a closer look at the Clojure port of SICM which I hadn't seen before. SICM seriously suffers from being trapped in a near-obsolete Scheme dialect.

I have been thinking along the same lines as you for a while, moving on from the single-page notebook to a Wiki-like document, and integrating Knuth-style literate programming for code with notebook-style literate programming for computations (which is not quite the same). My prototype is [here](https://github.com/activepapers/activepapers-pharo), with motivation/documentatio in [two](http://blog.khinsen.net/posts/2019/02/11/the-computational-notebook-of-the-future/) [blog posts](https://blog.khinsen.net/posts/2019/05/09/the-computational-notebook-of-the-future-part-2/) and a [workshop paper](https://hal.archives-ouvertes.fr/hal-02533110).

Expand full comment
author

Konrad, so happy to see your name here! Apologies for not writing back sooner. I went into full Monk mode and pushed the SICMUtils Clojurescript conversion to completion (https://github.com/littleredcomputer/sicmutils/pull/139, the final PR); I'd be thrilled to hear your thoughts. If you do have interest here, I had been meaning to write you about splitting out the generic arithmetic multimethods; some of it is very similar to `clojure.algo.generic`, I wanted to hear whether you thought we should actually be building on that, enhance that library or create a similar project.

I apologize that I hadn't seen your work here. You've clearly been thinking about this for longer than I have, and some of my thoughts look like a ripoff of the brilliant http://blog.khinsen.net/posts/2019/02/11/the-computational-notebook-of-the-future/! https://blog.khinsen.net/posts/2019/05/09/the-computational-notebook-of-the-future-part-2/ is wonderful too. I'll put your papers on my list to read. GToolkit has been on the list for a while.

There is a lot for us to talk about if you have the time. One thing to say is that I see my contribution here in the theme of "Science as Public Service"; I have a lot of energy to inject into making this happen, so I'd love to collaborate somehow and amplify what we're both trying to do.

If you're open to chatting more, mind sending me an email at sritchie09@gmail.com? I'm fairly free this coming week and the next, so most times should work for a short call.

Thank you again for writing!

Expand full comment

Hi Sam. Is there any way I can get involved in this project? The tools, techniques, ideas (Physics, Clojure, explorable explanations, Seymour Papert) you've mentioned here are just too close to my heart. I know clojure(script) to intermediate level, physics somewhat. Though what I lack on knowledge of physics I can make up via enthusiasm and bit of a slog. I'm open for writing reviews, writing a bit of code, trying things out as a beginner or just any other way to get involved.

One early idea I had was doing something on the same lines but for physics at an earlier level (example: Thinking Physics by Lewis Caroll Epstein https://www.amazon.in/Thinking-Physics-Gedanken-Lewis-Epstein/dp/0935218084) . But open for working on classical mechanics too! Hanging on to hope of contributing something to this effort :fingers-crossed:

Expand full comment
author

Harshad, apologies for my delay here! Short answer is yes, please, let's get you involved; of course you don't need my permission, but you should know that I've been racing to try to build the materials I talk about here so that we can all experiment with what good documents look like in a system like this.

Okay, so what to do. I agree with you that there is a *lot* of good that would come from having earlier-level physics encoded in a system like this. The SICMUtils system can do automatic differentiation, and I went pretty bonkers on building in a definite integral solver, so calculus works too.

I think what we want here is a shared set of "dynamic models", "computational models", whatever you want to call them, that other pages in this notebook can all reference. We have a single universe and science stares at it from all angles. Why not treat our simulated worlds like that? I suggest starting to write up some single essay inspired by the Epstein book, and maybe make it an exploration of a simulation that you build in the browser using the SICMUtils tooling. I'm happy to help here; a further suggestion is to write and just pretend that you have the system of your dreams, maybe provide stage directions for what's missing. I expect that we'll take multiple passes over all of these essays as the features in this prototype come online.

After writing this essay I went into Code Mode and completed the final push on the SICMUtils library: https://github.com/littleredcomputer/sicmutils it's still not terribly well documented, but it's in a state now where everything will run in the browser in Clojurescript. Take a look at the sritchie/shadow_cljs branch (https://github.com/littleredcomputer/sicmutils/pull/139), which is what I'm preparing for release.

This is the namespace I used to generate animations in raw Clojure using Quil: https://github.com/sritchie/maturin/blob/master/src/maturin/better.clj This should all work in Clojurescript now, and should (with some staring) give you an idea of how to animate a system described by a set of differential equations.

Final advice is to expect this to feel helplessly confusing at the start... we're making a new thing. I'm thrilled that you want to help out! Feel free to write me at sritchie09@gmail.com any time to talk this stuff through. (Same goes for anyone reading this comment.)

Cheers!

Expand full comment