Suggestions for Encouraging Julia Adoption

I am trying to get my company to adopt Julia in addition to our already existing Python and R code. Any suggestions?

2 Likes

Find a problem they are currently struggling to solve with due to performance/lack of multiple dispatch and write it for them in a week?

5 Likes

I find Julia syntax much much easier.

Check out my comparison of Julia w/ Matlab/R/STATA: https://github.com/azev77/QuantEcon.cheatsheet/blob/master/stats-cheatsheet.rst

2 Likes

I’ve shared links to the MIT course, done a couple of lunch’n’learns on my own uses of Julia to solve specific work problems, and have simply used it such that it shows up when I’m presenting some analysis or simulation - most recently in the form of Pluto notebooks with some amount of interactivity or animations. I’m not trying to move folks from Python or R so much as from Excel.

5 Likes

I ported some Python code that needed gradients over the weekend and showed how you could get machine epsilon gradients and Jacobians very fast without hand writing them, and that certainly intrigued my colleagues.

That’s my general approach, to show that Julia is too good to ignore.

4 Likes

so the AD systems in Python can’t get them?

I haven’t had much success, as Julia does not offer much over R when 99% of what you do is basically undergraduate statistics. R + tidyverse + RStudio + RMarkdown is just too good right now, especially for colleagues who mostly come from a humanities or social sciences background. These are people who work in R (and SQL) most of the day but don’t consider themselves as programmers, and who find Python scary and weird.

However, Pluto did impress people a lot and caused at least 1 person to further explore Julia. I’ve seen her use it a few times already when doing some explorations of data.

2 Likes

I haven’t tried myself, but you typically have to rewrite your python code to be able to differentiate it, e.g., using casadi. Some preliminary experiments with JAX turned out to be unfruitful, probably because none of use have experience with JAX. ForwardDiff.jl, on the other hand is in general very easy to get going and is super performant at that. When you have an implementation that works with ForwardDiff.jl, it also works with symbolic variables, uncertainty propagation and a whole host of other more or less exotic use cases, this is something very attractive and easy to appreciate.

2 Likes

Hear hear. And for higher level NN research, ppl seem to be content with Pytorch.

Python is just inoffensive, I can use it but meh. I kinda need someone else to write the fast code. The issue is that Julia doesn’t have a fast and complete NN package atm. I thought Flux.jl would be it, but it hasn’t lived up to promise just yet.

Interested to hear more about that especially vs Flux.jl and Knet.jl etc.

If you’re only “doing stats”, not so much making new code, then I can see how R is good, as that’s what it was made for. I just like to point out you can use R and Julia together (or with Python or all three) with: https://juliainterop.github.io/RCall.jl/stable/gettingstarted/#R-REPL-mode-1

and the R REPL mode seems ideal to use, so it’s like you never left R (the language, not the enviroment/IDEs like RStudio). There are several other ways to use together, e.g. R"" string macro, that I assume you could use in Pluto (I’m just not sure about the R REPL mode, I doubt it).

I believe you would lose out on some of the tools (but not any packages), e.g. RStudio, if you use Julia as your main language, unless you keep R as the main one and call Julia (also possible).

You might ask, why mix those languages together, when I can use just one? It might be a long-term or at least a short-term solution, I’m just not sure what hasn’t been reimplemented in Julia-only code, seems like a lot, but you would have to look into packages, e.g. recently registered: https://github.com/clementpoiret/Pingouin.jl

Pingouin is designed for users who want simple yet exhaustive stats functions

I’m just pointing out you wouldn’t need to explore all those new (to you at least) Julia packages, and could gradually migrate.

My understanding is that Pluto is “Julia only” (while only applying to the main language), unlike Jupyther, and similar just better.