Rendered at 20:16:01 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
wodenokoto 2 days ago [-]
As I recall, Pluto really got into the spotlight, pre-pandemic with the course "Introduction to Computational Thinking with Julia", which as I remember went kinda viral (or maybe just in my bubble)
It was a nice course, I did the first few weeks before life got in the way. It looks like they did one more in 2020 with a focus on COVID:
Pluto is great. I use it all the time. If you like the reactivity/reproducibility but are wedded to Python, you might want to check out Marimo, which is also great. [https://marimo.io/]
It too puts the output of a cell above the code so if you're unable to adapt to things that are different it's also probably not for you.
FWIW, Observable's Notebooks (Javascript) work the same way: output above the code that produces it. [https://observablehq.com/]
I too did not like having the output above the code but got over it pretty quickly. For plots, it's arguably better: usually, I want to see the plot before I see the 15 line invocation of some plot command. The thing that bugs me the most about Pluto now is that it really wants you to only have a single evaluating statement per cell. You have to wrap stuff in "block......end" if you want to e.g. define more than one variable in a cell.
akshayka 1 days ago [-]
Hello from the original creator of marimo. We now default to putting outputs below cells (feedback heard!). Pluto.jl was a significant inspiration in marimo’s original design.
eigenspace 1 days ago [-]
I've still never tried Marimo (I avoid Python when I can), but I definitely do often find myself wishing Pluto would take some ideas from you guys.
Pluto is very focused on educational uses, and tends to be very opinioned in trying to present as little 'configuration' and optionality to users as possible, which I think makes it quite hard to use as an actual tool. It's so close to being something that I really love, but it's just not quite there for me.
staplung 1 days ago [-]
Oh, cool! I couldn't remember which way Marimo did it so just checked the homepage. The gif there still seems to show it the old way, just FYI.
Anyway, keep up the awesome work! I haven't used Jupyter at all since I started running marimo from uvx.
librasteve 2 days ago [-]
This looks like an interesting project, coming from another minority language - Raku - I can see how dogfooding like this is a great way to try and help Julia break into the Python hegemony (yawn) esp. in academic circles. otoh, I am not sure that a pure play Julia notebook thing is long run better than a pure play Python thing (Jupyter ofc).
Yet notebooks are a vital angle for any scripting language. So I guess I would like to see a language neutral notebook platform with pluggable kernels. Meantime Jupyter does that pretty well and, with Raku Inline::Python support for pip modules can be a lot of fun with a Raku kernel, especially with LLM chatbook use cases.
Jupyter is not a pure python thing, the Ju already stands for Julia, py for Python and the r for R
ForceBru 1 days ago [-]
Initially I thought this was a joke (Julia doesn't seem to be popular enough to be one of the cornerstones of Jupyter, compared to Python and R), but indeed, Jupyter's documentation says it's true:
> The name Jupyter comes from the three programming languages the project originally supported: Julia (ju), Python (pyt) and R (r).
You'd think so, but Julia has been around a while now. Julia was one of the first non-python languages added back when it was still called ipython. I remember sitting in a room at the CfA with Fernando Perez and Steven Johnson and hacking up then original integration. Don't remember exactly when that was but more than a decade ago.
eigenspace 1 days ago [-]
I think it was a bit unclear, but from the mention of the benefits of "dogfooding", I think they're talking about how the underlying infrastructure of Jupyter is written in Python.
Yes, Julia works fine in Jupyter notebooks as a kernel, but the Jupyter notebooks itself is implemented in Python.
cheesecakegood 1 days ago [-]
> So I guess I would like to see a language neutral notebook platform with pluggable kernels.
Doesn’t this already exist? .QMD files (Quarto Markdown) allow you to mix and match languages in code cells and is platform neutral. Python, R, Observable JS, Julia, bash, or any language with Jupyter kernel, all natively supported and you can easily toggle output between PDFs, HTML, etc.
slwvx 2 days ago [-]
I would love Pluto but am completely put off by the output of a command being shown above the command that creates it. Sure, maybe the whole notebook is reactive, and I shouldn't care, but I still see Pluto as producing something close to a document or web page, which I want to read from top to bottom, and can't do with Pluto. This single feature/problem has kept me away from Pluto
galleywest200 2 days ago [-]
I also would like if they gave you a toggle option to display the output below the code boxes instead of above, but I still like Pluto.
eigenspace 1 days ago [-]
Yes, the hostility to any suggestions about letting this be configurable is pretty frustrating.
flexagoon 2 days ago [-]
Reactive notebooks are so much better. Using Pluto or Livebook makes you realize how inconvenient and illogical Jupyter is in comparison.
FabHK 1 days ago [-]
I mean, there is nothing wrong with state, per se, and yes, this Excel-ish paradigm is awesome.
Although: Most Excel power users have automatic calculations disabled. Why? They want to control when full calculations. If you know that you want to change three things, you can change three things (in the correct order, which you - fair enough - must know), then calculate the rest (F9 in Excel, recalc below in Jupyter if - fair enough - your notebook is in topological order).
In Pluto, you sort of rely on your calculations being quick.
flexagoon 1 days ago [-]
For me, the worst part about Jupyter is not that the cells don't automatically recalculate (I can handle pressing recalc below), but that the output is affected by the order you run the cells in. With Jupyter, there are many situations where to re-run the cell you also have to first re-run all the cells above that one, and it doesn't tell you which ones. Automatic recalculation can be disabled even in reactive notebooks.
cycomanic 1 days ago [-]
It's interesting, I'm not a big notebook user myself, but others (and myself rarely) often take advantage of that feature, because it allows you to e.g. get data from an instrument, but then continue exploring the data using different cells in different orders, e.g. trying different ways of analysing things, e.g. I can cell that gets the data a cell that runs a moving average and a cell that does analyses. When debugging the analysis I can choose if I want to run the moving average data or the normal data, just by choosing I run this or that preceding cell.
Once you take away this way of working, I might as well not work in a notebook at all (which admittedly is my default way of working anyway).
g0wda 1 days ago [-]
Yeah it is useful. However the problem arises when you share a notebook with someone and they just can’t get it to work either because you forgot to reorder cells or your output depended on some state from a cell you deleted thinking nothing depends on it. You need to restart the kernel and run the notebook all the way through to be sure. Pluto’s reactivity eliminates this issue altogether. It’s a readily reproducible artifact. The functionality you mention would be the default in Pluto btw. Something that reads a sensor will read it only when you run the cell and update all depenents.
boccaff 1 days ago [-]
It is interesting that they are paying attention to that, as the section on interactivity [1] brings "how to disable a cell" that would prevent its reactivity and anything that depends upon. With some careful placement, you can disable the automatic calculations. Another thing would be tuning the parameter for confirming before a long runtime. Set it to 50 ms, and only run "almost instant things".
Pluto has been quite nice for me to use over the last few years and I even host notebooks using the SliderServer to let others run analysis and examples from the web.
dleeftink 1 days ago [-]
Looking forward to using this[0] with Pluto instead of repl! (They just look so cool)
Just in case, you don't even need Pluto or Jupyter to display Unicode plots — they're rendered right in the terminal
qujl 1 days ago [-]
I like Pluto as well, but the project baked in opinionated choices which imo make sense for hosting course notebooks for a class but at the same time make it annoying to use as a tool.
Besides the often commented upon cell outputs that appear above the code and the forced begin/end blocks, Id rather see better control mechanisms for pausing/replaying execution, to have the notebooks play nicely with the existing package environment system instead of being self-contained, and to function outside the browser (eg with VS Code support).
sundarurfriend 1 days ago [-]
Agreed with all the rest of it, but
> to have the notebooks play nicely with the existing package environment system instead of being self-contained
Just used it this week for my university course, was one of those exercises that actually were fun and educative.
whatever1 2 days ago [-]
These days it is so easy to just build a full fledged react website with interactive components served locally, personally I just stopped trying to build language specific UIs.
vovavili 2 days ago [-]
I think of reactive notebooks as a visual REPL for your particular language. If they compete with anything, it's more with dashboarding software than with React.
KeplerBoy 2 days ago [-]
That's true. You can just point the agent at a python function and tell it to slap some fastapi around that and spin up a frontend.
shibaprasadb 1 days ago [-]
Are people using Julia in the industries yet? This looks promising.
postflopclarity 1 days ago [-]
yes. adoption is slow, but steadily increasing. for certain tasks it's the best tool and each release just gets better.
Archit3ch 1 days ago [-]
We use Julia for realtime audio processing. ;)
klaff 1 days ago [-]
I am also curious! A few things I would like to play with but haven't made the time for yet
- real time FFT/spectrogram visualization (I want to play with some spiral things for chord / harmony visualization)
- synth / live coding stuff (like supercollider but in Julia)
Archit3ch 22 hours ago [-]
Re: live coding, the core part (redefining Julia functions), already works in Julia Base. You use the REPL and invokelatest() . :) https://www.youtube.com/watch?v=k-WUQFxWNj0
I have wrapped it in a project with helpers for opening audio streams and timing, but it's too vibecoded to share. It mostly exists as a Strudel-like environment to experiment with audio processing inside GPU shaders, and defining analog circuits in ModelingToolkit.
notagoodidea 1 days ago [-]
I am curious if you have any projects example, writing or example around audio processing and dsp with Julia?
Archit3ch 23 hours ago [-]
The interesting part is deployment. Deploying Julia is still in flux, and especially tricky for realtime audio. I wanna do a proper write up one day, with slides and GitHub code. Perhaps as a JuliaCon talk or local meetup.
I find that DSP tends to look like procedural C code in any language. It should be straightforward to port your C++/Rust directly to Julia, and the ergonomics are much improved (especially around AutoDiff!). See https://www.youtube.com/watch?v=SvnDr9nnOZs
Here's my older talk on audio processing with Julia. The code still works, if you change the deprecated functionality for the new equivalents covered in the docs: https://www.youtube.com/watch?v=3DfVowNFI2c
ryd440306 1 days ago [-]
This is great, but people should realize this is only catching up Wolfram Notebook 10 years ago.
fithisux 1 days ago [-]
I like Pluto, what is a small annoyance is it creates a new environment in each session and does not reuse by default the root (system) one. But it is easy to fix with a preamble.
mwest217 1 days ago [-]
That's one of its strongest features, imo, as it makes notebooks reproducible on other machines, rather than tying them to your system environment.
It was a nice course, I did the first few weeks before life got in the way. It looks like they did one more in 2020 with a focus on COVID:
https://ocw.mit.edu/courses/18-s190-introduction-to-computat...
It too puts the output of a cell above the code so if you're unable to adapt to things that are different it's also probably not for you.
FWIW, Observable's Notebooks (Javascript) work the same way: output above the code that produces it. [https://observablehq.com/]
I too did not like having the output above the code but got over it pretty quickly. For plots, it's arguably better: usually, I want to see the plot before I see the 15 line invocation of some plot command. The thing that bugs me the most about Pluto now is that it really wants you to only have a single evaluating statement per cell. You have to wrap stuff in "block......end" if you want to e.g. define more than one variable in a cell.
Pluto is very focused on educational uses, and tends to be very opinioned in trying to present as little 'configuration' and optionality to users as possible, which I think makes it quite hard to use as an actual tool. It's so close to being something that I really love, but it's just not quite there for me.
Anyway, keep up the awesome work! I haven't used Jupyter at all since I started running marimo from uvx.
Yet notebooks are a vital angle for any scripting language. So I guess I would like to see a language neutral notebook platform with pluggable kernels. Meantime Jupyter does that pretty well and, with Raku Inline::Python support for pip modules can be a lot of fun with a Raku kernel, especially with LLM chatbook use cases.
https://raku.land/zef:bduggan/Jupyter::Kernel
> The name Jupyter comes from the three programming languages the project originally supported: Julia (ju), Python (pyt) and R (r).
https://docs.jupyter.org/en/latest/what_is_jupyter.html
Yes, Julia works fine in Jupyter notebooks as a kernel, but the Jupyter notebooks itself is implemented in Python.
Doesn’t this already exist? .QMD files (Quarto Markdown) allow you to mix and match languages in code cells and is platform neutral. Python, R, Observable JS, Julia, bash, or any language with Jupyter kernel, all natively supported and you can easily toggle output between PDFs, HTML, etc.
Although: Most Excel power users have automatic calculations disabled. Why? They want to control when full calculations. If you know that you want to change three things, you can change three things (in the correct order, which you - fair enough - must know), then calculate the rest (F9 in Excel, recalc below in Jupyter if - fair enough - your notebook is in topological order).
In Pluto, you sort of rely on your calculations being quick.
Once you take away this way of working, I might as well not work in a notebook at all (which admittedly is my default way of working anyway).
[1]https://discourse.julialang.org/t/pluto-1-0-release/137296#p...
[0]: https://github.com/JuliaPlots/UnicodePlots.jl
Besides the often commented upon cell outputs that appear above the code and the forced begin/end blocks, Id rather see better control mechanisms for pausing/replaying execution, to have the notebooks play nicely with the existing package environment system instead of being self-contained, and to function outside the browser (eg with VS Code support).
> to have the notebooks play nicely with the existing package environment system instead of being self-contained
isn't that just a `Pkg.activate` away? https://plutojl.org/en/docs/packages-advanced/
I have wrapped it in a project with helpers for opening audio streams and timing, but it's too vibecoded to share. It mostly exists as a Strudel-like environment to experiment with audio processing inside GPU shaders, and defining analog circuits in ModelingToolkit.
I find that DSP tends to look like procedural C code in any language. It should be straightforward to port your C++/Rust directly to Julia, and the ergonomics are much improved (especially around AutoDiff!). See https://www.youtube.com/watch?v=SvnDr9nnOZs
Here's my older talk on audio processing with Julia. The code still works, if you change the deprecated functionality for the new equivalents covered in the docs: https://www.youtube.com/watch?v=3DfVowNFI2c