Thank you for posting this. I’m currently doing up a presentation for data analysis for experiments using Julia and trying to sell people on learning to code instead of using Excel. Your slides have a lot of great points I haven’t thought of!
Nice presentation! The one thing that surprised me about the gripes section was
Getting floats to print with lower precision is way more difficult than
it should be for new users
What do other languages do differently here? It seems to me R and Python print roughly the same things as Julia by default (with R chopping off a bit more)?
Yes (though Matlab has a shorter default)
But, customizing the default is harder.
NumPy:
np.set_printoptions(precision=4)
R:
options(digits=4)
Julia: …
type pirating Float64’s show?
Which assumes you have learned how Julia’s display system works (a big topic!)
using Printf # Ok, but, Python has f-strings; built-in!
Base.show(io::IO, x::Float64) = @sprintf "%.4g" x
# Or should this be for ::MIME"text/plain" rather?
# That would allow you to use `print(x)`/`show(x)` to temporarily see more digits.
# BUT, most composite datatypes containing floats would then not use our new compact printing.
To be fair to Excel and the like, it has so many killer features that most programming languages don’t have:
Edit your plots by point and click. Plots are graphic – it’s silly to tweak them with code.
Pylustrator (for Matplotlib) is a great experiment that combines GUI-editing of plots with code/reproducibility (though it’s too buggy for practical use atm for me).
Your data is always easily visible / inspectable
Not so in the middle of a for loop in a function in a function; both at runtime and in your code editor
Reactivity!
Though props for the likes of Observable, natto.dev, Pluto.jl
In “why programming” I think a big missing is “reproducibility”
this is also missing in the Julia advantages… when you deal with packages, a huge advantage of Julia is the easy you create thin environments, so that each project you deal with has its own (reproducible) environment…
Yeah; I mention Project.toml / Manifest.toml (and talked about it in person); but might be good to add something.
Is there a big difference with R / Python here? (Yes it’s a bit more ergonomic in Julia, and Python has decision fatigue for its plethora of env/pkg management options; but they do the same thing I think)
I hadn’t used Artifacts.jl yet. This looks like it could be amazing for scientists?!
Automatic downloading of datasets (too big for git) from a URL, plus checksum’ing, plus avoiding unnecessary duplicates?
Oh! BinaryBuilder + Yggdrasil is great for binaries (like pandoc, pq, etc.) but not really meant too much for datasets. I would heartily recommend DataDeps.jl for the case you are thinking of though!
If you are trying to get people to code rather than excel, do you mind if I plug my package ClipData.jl? It might help people slowly transition their workflows from excel to Julia.
I recommend mentioning DrWatson package. It is perfect for beginners IMO. One doesn’t need to learn about environments and the code becomes truly reproducible.