(Collaborate on) Resources for "Intro to Julia" talks

I imagine many people in our community are, like me, vocal fans of Julia to their colleagues and friends, and I’m certain that many of you have been asked to give “Intro to Julia” talks. I’m guessing that globally there’s at least one such talk a week at Universities/Companies/Meetups etc.

I’d like to know if there are any resources that exist already - e.g. slides, demos, and talking points - that could be helpful for introducing Julia to potential new users? If not, I think we should collaborate on some that would make doing this easier for all of us.

In particular, these would be very helpful:

  1. A good account of the selling points: why multiple-dispatch is awesome, why fast without trying is helpful for exploring ideas quickly, the power of macros and generated functions, how code-introspection tools like @code_llvm are cool, etc.
  2. Some good demonstrations that could be run during a presentation to highlight the above
  3. Good answers to the common objections people have to switching to Julia - e.g. I can just use Numba/Cython, the Machine Learning/general package ecosystem is a little immature and undermanned, array indices are 1-based, etc.

A list of pros and cons vs the other options (Python, R, Matlab, C/C++, Fortran, …) could also be nice. Items on such a list would also be good targets for features and packages that people might work on, since they’d highlight issues impacting wider adoption.

It would be great if we could organise around some (semi-)official resources, possibly a repo under JuliaLang or some other org. Introducing the language to potential new users effectively, is pretty important to Julia’s long term prospects of success IMO.

To be clear, I’m not really looking for those resources to be compiled in this thread just yet - though I suppose if you have good links, you might as well share. I’m more looking for a pointer to a repository of such info, and if that doesn’t exist, a suggestion as to where and how one could/should be created (assuming people think this is a good idea), that we can then flesh out with content and ideas. Also suggestions for a name for the org/repo would be good too - “JuliaEvangelism”/“IntroToJulia” are my first attempts :slight_smile:

11 Likes

here’s a great start. I wonder whether it’s difficult to find if you didn’t already know about it…

2 Likes

@jobjob: This is a great idea. There have been some Julia introductory talks, by David Sanders (@dpsanders) for instance, but it would be great to have a resource like you described: an official repository for such an introductory talk/seminar/tutorial. In fact something like this could be also featured on the Julia-language website, because often something like this is all that is needed for a newbie to get started.

In this repository/website:

https://github.com/UCIDataScienceInitiative/IntroToJulia

I have a section on “Why Julia?” which I use to introduce how Julia is different and how that influences one’s use of Julia.

http://ucidatascienceinitiative.github.io/IntroToJulia/Html/WhyJulia

Honestly, at this point I think the way to evangelize Julia though is through its libraries. Since Julia is fast by itself, you have a lot of scientists writing unique libraries in Julia. So you get the basic stuff that every other language has, but you also get a lot of really specialized stuff which is super useful.

7 Likes

@ChrisRackauckas: your Intro is very helpful. I like it a lot!

Isn’t it listed in the learning page of the website under resources?

1 Like

David,

There is no such thing as “Resources”, but under “Learning” there is a list of tutorials. Yours are listed, and @ChrisRackauckas’s Intro is listed. Then there is a bunch of older llinks, probably a bit outdated (version 0.4 and such).

I think @jobjob’s point was that it would be nice to have these resources better organized and possibly part of a single collection that would be updated to go with the latest release. (Am I right, was that the thinking?)

P

1 Like

As I was trying to say, Julia.jl is listed in the section with the heading “Resources” on the Learning page.

Thanks @ChrisRackauckas and @dpsanders, those are good resources.

I think @jobjob’s point was that it would be nice to have these resources better organized and possibly part of a single collection that would be updated to go with the latest release. (Am I right, was that the thinking?)

Yep, up to date (though obviously that’s just a function of effort), but more importantly, better organised specifically for presentations to potential new users, those resources seem more for people learning Julia, though clearly there’s some overlap.

What I’m hoping for is high quality slides (in a github repo so they can be improved upon), possibly in impress.js or reveal.js, and/or some notebooks/demos geared for such presentations (Chris’ whyjulia is definitely in the ballpark, though maybe can be updated, or streamlined for a shorter presentation), a really good, and fair, comparison to the alternatives, and good responses to common questions that tend to arise in these talks.

Honestly, at this point I think the way to evangelize Julia though is through its libraries. Since Julia is fast by itself, you have a lot of scientists writing unique libraries in Julia. So you get the basic stuff that every other language has, but you also get a lot of really specialized stuff which is super useful.

Completely agree, and it would be great to have a showcase of things done in Julia that would be difficult/impossible to do in other competing languages. E.g. I’m led to believe that your (Chris’) Diff Eq suite, and JuMP.jl have features that outshine the competition, thanks to multiple dispatch and macros. Similarly, I think @MikeInnes’ Flux.jl has the potential to be best in class for dynamic deep/machine learning computations on GPUs, thanks to Julia’s programming model, and the cool GPU packages that it builds on.

Basically, I’m talking about a repo for resources for presenters to introduce people to julia, that we can collaborate on, that can help sway the unconvinced. I can obviously start my own, but some semi-official support seems like it’d be of great benefit. Or am I tripping?

1 Like

OK, I started writing a really similar response to yours @jobjob (I agree with you completely), but here it is anyways…
I think this is a great idea. While the links here are grrrrreat, they concentrate on teaching instead of convincing. I’m bound to give a similar talk soon so I’d personally would prefer a bunch of actual presentations that help convince matlab/python users to try Julia or even switch.
We all have different crowd-types to preach to (mine are a bunch of non-coding biologists that butcher their way through matlab to get what they want), wouldn’t it be great if we had a bunch of “standard” or skeleton presentations to build on that are 15, 30, 45, 60, etc minutes long, for computer scientists, biologists, engineers, social scientists, etc? If we write them in markdown it will simplify the conversion to any favorite format. This way, you won’t need to reinvent the wheel while still having the flexibility to change what you want.
The assumption I’m taking here is that given the time limit and the crowd type, we can all agree (or settle) on what that specific talk should contain. I think that we can at least agree on the points that say a biologist HAS to have heard about Julia in a 15 minute presentation talk.

5 Likes

Yes, like stiff stochastic/delay differential equation solvers and multiscale modeling tools? For the (systems) biologists I present to this is the hot topic. I think the issue here is that every audience is different, and the only person who can cater a talk to the audience you’re dealing with is probably you because you’re the Julia expert in that field. Every audience wants to see very different things so I can’t think of a general talk that is good at all. I think we should just give some very broad teaching tools and allow the presenter to work those in to a presentation which matches what they need (probably including some packages specific to their domain).

2 Likes

I think you’re right when it comes to packages (as you’ve illustrated), but I still believe that there can be a list of points about the language itself. These points are along the lines of what’s on the first page of the Julia home page. Let 10 biologists build a 15 minute convince-me presentation and I bet you’ll get at least 75% overlap. Let those 10 share resources and you’ll distill it to 90% overlap with 10% wiggle room. I’m obviously pulling these numbers out of nowhere, but you get the gist.
I’m envisioning a git repo with sub sub folders categorized by target audiences, and then a bunch of .mkd files for the different presentation times (i.e. # of slides). I’ll gladly upload the “visual biology” 15 minute slot!

1 Like

I completely overlooked the “Introducing Julia” wikibook,Introducing Julia - Wikibooks, open books for an open world. This actually fits the bill quite nicely, I think. It would be cool if the code was runnable within the webpage though.

1 Like

Getting back to the distinction between teaching people how to use Julia versus convincing people to switch to Julia, I wanted to get even more specific: our audiences are not only defined by their disciplines (engineers, biologists, physicists, etc) but usually by the language they currently use. I can at least report that the groups of people I’d give a pitch to are composed of 95% matlab, 5% python, plus residuals. So it would be good to angle the presentations with that in mind, matlab-julia benchmarking for example.

2 Likes

Actually: why not simply re-write this wikibook as Jupyter notebooks? Then it would be directly runnable, and one could present these as well and do live demos… It appears that most (all?) of “Introducing Julia” was written by @cormullion : what do you think of this idea please? I’d be willing to help.…

In fact it is (or at least was) a notebook. So I can run it against new Julia releases. But it diverged and there are no tools to merge. :pouting_cat:

However, as a public notebook it would no longer editable by the community (unless it’s on GitHub), and no longer very searchable by Google et al.

Quite a few people (and not always Julia-users) have made smallish edits, but generally there’s not been much evidence of substantial voluntary contributions.

1 Like

There’s nbdime for diffing and merging of Notebooks, if that’s what you’re referring to. It’s still in early stages though. Caveat: I haven’t actually used it.

https://github.com/jupyter/nbdime

5 Likes

Total agreement here that convincing is an important goal distinct from teaching, and that probably 95% of my target audience is coming from Matlab.

My feeling is that it’s premature to develop one canonical “Why Julia?” talk at this point, and that we’d be better off with multiple experiments, sharing, comparing, and iterating. In that spirit, I’ll share a “Why Julia?” talk (https://github.com/johnfgibson/whyjulia) I’ve given at a few places and am developing further for a PR campaign at my university. It’s still rough, but I think I got the aim and structure right. Much of the content is cobbled together from @dpsanders, @ChrisRackauckas, and @andreasnoack notebooks. Thanks!

My main points are

Julia is

  1. an easy replacement for Matlab for interactive numerical computing (but free and better)
  2. flexible and dynamic like Python
  3. as fast as C or Fortran
  4. seriously more powerful and sophisticated than alternatives

I do this with a series of Julia notebooks that 1. show a handful of very Matlabby interactive computations (SVD of a matrix, integrate Lorenz equations, etc.), 2. show the rich, well-designed numerical type system and a demo of LU decomp of a matrix over a Galois field (taken from an Andreas Noack talk), 3. show a benchmark of Julia on a nonlinear PDE integration, versus Matlab, Python, C++, C, and Fortran, and 4. demo metaprogramming, code generation, arbitrary-precision math, Unicode source text, etc. throughout.

I need to add sections on

  1. how Julia achieves both speed and flexibility: multiple dispatch, type inference, JIT.
  2. parallel computing
  3. successful large-scale case studies (e.g. the Celeste Project)

The talk is currently aimed at live delivery, so there’s less explanatory text than would be good for reading solo. It probably makes sense to have a heavily annotated version for reading.

8 Likes

I had given a talk earlier and the notebooks (https://github.com/svaksha/jna/blob/master/2015-07-fsmkcamp/00_index.ipynb) are under a CC license. Hope that helps.

2 Likes