Consider a notebook with a cell with two lines of code:
[1, 2, 3]
"foo bar"
The default in notebooks is to just render/show the value of the last expression (`"foo bar"`). In pdit, the value of all top-level expressions are rendered/shown:
[1, 2, 3] #=> [1, 2, 3]
"foo bar" #=> "foo bar"
In that way it is more like a REPL than a notebook, you could say.
Allow me to mention my project Ankivalenz[1], which turns structured HTML files into Anki decks. I use it with Quarto[2][3] to generate my Anki decks. Instead of having an unorganized "pool" of Anki cards, I can create hierarchical, well-organized notes and turn them into an Anki deck. This makes it easier to create Anki decks, but more importantly, it makes it easier to keep Anki decks up to date.
I just spent half an hour in an airport reading the first chapter. With only a bit of knowledge of Bernoulli distributions, I found it very informative and well written, moving forward at a nice pace. The tiny tests made me reread a few things I had glossed over initially, forcing me to understand it a little better. Good job.
It would be cool if you provided links to further reading on the various concepts, for extracurricular studies.
Overall the style and ethos feels similar to Pluto.jl, which I think puts you in good company :)
Bonus points for working almost flawlessly on mobile (the table with 0’s and 1’s overflowed and was pushed offscreen.)
Please do copy! I have experimented with tree based interfaces as well, and have also found that they become unmanageable.
The row/column approach works well, but eventually breaks down when working with dozens of notes at the same time. I am trying to figure out a way to efficiently group notes[1], but have hit a bit of a wall. Looking forward to seeing what you come up with :)
[1] E.g. my attempt to have multiple workspaces, while neat in theory, wasn’t great to work with in practice: https://twitter.com/ichverstehe/status/1347896632424198144 - having everything at the same level works better. My next attempt might be some sort of grouped tiles with autoscaling.
When I started building this a year and a half ago, this was my plan. Since then, (1) there has been an explosion of note apps and (2) I realized that I do not really feel enthusiastic about building out commodity features needed for that. Instead, I am slowly building for myself, experimenting with different ideas and workflows[1], and sharing them on my blog, with the hope that someone else picks them up.
Alternatively, if I wait long enough, the "note app" part will become a commodity itself, and I can implement the interface/workflows on top of it. Quarto[2] looks promising in that regard. Their visual editor[3], which is used in R Studio, is really good.
Sinatra, Cuba[1] etc. can finely be used for larger apps as well. It may require some more discipline upfront, but the notion that those are only usable for small hacks is moot. In fact, I have found it easier to introduce new coworkers (without prior knowledge of either) to medium sized (5k LOC) Sinatra apps than Rails apps the same size.