Suggested software setup

I have been using Julia successfully on MacOS and Linux (Fedora). I would suggest starting with a JuliaPro installer for this study. I’ve kept a few notes about my install process:

  • I’ve been using v1.2 so far, both REPL and Juno “IDE”.

    • on MacOS you will need to have XCode tools installed, see the install guide
    • on Linux the install guide mentions needing these libs (install via yum/dnf/apt-get/etc, I only needed to add xclip):

      xclip
      libXScrnSaver
      
  • apparently, starting with v1.2 what’s included appears to have changed: to minimize the installer size the “curated list of packages” are no longer part of the download itself. They can be installed via the usual Pgk commands. What’s different for “curated” packages is that the install will be configured to use Julia Computing’s github repo1 so that only the supposedly tested versions are available. Using Julia Computing’s repo will require authenticating to get their token. Keep this in mind if you plan to play with packages outside of their supported list.

  • for REPL you can use Juno’s “REPL” tab. I find that doing so gives me experince similar to that of RStudio (a good thing):

{ width=80% }

  • if you prefer not to rely on the IDE (which is not that great right now) and use REPL (which is very functional), you can use julia binary from your JuliaPro distribution:
    • MacOS: /Applications/JuliaPro-<version>.app/Contents/Resources/julia/Contents/Resources/julia/bin/julia
    • Linux: <install dir>/Julia/bin/julia

FAQs and tips for fellow Julia explorers

General

  • if you’re working with custom types, it is recommended to keep work code in a module (which could be as simple as keeping it inside a module MyModule ... end block) even for one-off stuff: onlike, say, R or Python Julia currently does not allow updating type definitions within a session without restarting it. It seems to have gone through several iterations of addressing this workflow need, but right now re-include()ing a module seems to be what’s guaranteed to work.

  • another reason for working inside a module is because code will run faster (it will be JIT’ed sooner)

Juno

Juno is basically a few packages inside Atom. It is not quite an “IDE” at this point. Visual Studio Code might be a reasonable alternative, but in my experiments VSC had trouble with Julia v1.2. Juno comes bundled with a julia build from the same entity.

  • as a result of being a collection of Atom packages, some things you might want to tweak in the UI could be dispersed over multiple places. For example:
    • “Julia Client” package:
      • you may wish to choose positioning of various tabs: Workspace, Documentation, Plots, REPL, etc
    • “tool-bar” package:
      • you might want to opt for smaller icons
    • “tree-view” package:
      • “Always Open Existing”, “Auto Reveal” settings might be of interest

Books, other resources

There is a constantly growing list of resources at https://julialang.org. I list below some resources that I’ve either used myself or that seemed to stand out from the rest.

books about or based on Julia v1.0+:

reference docs:

video lectures, talks:

online practice:


  1. Julia packages are maintained as git repos. ^
Next