Designated Target Audience of Julia 1.0?

Hello,

I believe

and

are the absolute key points.

I believe people from natural science or engineering are interested in the solution and in my experience tend to usually try to understand the mathematical algorithm (up to a point, depending on the person). There is also some knowledge of general numerical mathematics. But software development is then often just “good enough is good enough” with an often problem specific solution. Fortran, especially if linear algebra is the main chunk of work, tends to fill these requirements very well, even today.

I hope julia can be used in the classroom at universities if a scripted language is preferred which can be used in a simple way but is capable of delivering high performance for demonstrations which need that and could not be done “live” otherwise. In my opinion multiple dispatch is a great tool available in julia. While I never really liked (or understood) OOP which I assume would enable similar behaviour, I like multiple dispatch very much and the concept is easy to integrate into basic imperativ language use.
And if someone then wants to do really complicated software development then julia has all the tools and great examples of that (although the use of macros makes julia quite different from other more usual languages, neither fortran or c/c++ even have them I believe, and might deter some people).

Also, if usage becomes more widespread I hope soon widely known best practice how to usually obtain good performance will emerge, e.g. when and how to use static arrays, which is not a base package but which I believe is of high importance for some applications.

Just my 2 cents !

@elrod Your point about setting up training is very valid. I have attended many commercial training courses, and indeed many evening Meetups also.
Commercial training courses tend to be spread over three or four days. Of course the organiser wants to get in the maximum relevant content, but yes a lot of time is spent in getting the setup installed.

One of the best courses I went to was Redhat Openstack. The lecturer there had pre-prepared environments ready installed at Redhat HQ and we were allocated a number - all we had to do was ssh into openstackN and we had the correct environment ready to go. That does take effort beforehand.

I would start waffling on about VMs or Docker containers, but the tool used does not do the prep work for you.

Good enough for Jazz

Just to provide a counterpoint from my own experience: I held a hands-on introduction to Julia for five students who were going to use Julia for their master theses. The four students who chose vanilla Julia + Juno were all up and running within 10 minutes. The last student wanted a “batteries included” installation and chose JuliaPro. The installation took a full hour to complete on her laptop, probably because it lacked an SSD. So if you want to use JuliaPro in an interactive session, have the students install it in advance.

This is sensible to do for any software used interactively in an academic setting. Problems are not specific to Julia, and class time is too precious to waste on debugging setups.

For a course in Julia, I would use a Jupyter-based local server. But if individual setups are a must, I find the following to be a reasonable approach:

  1. provide installation instructions at least 2 weeks in advance, and a way to test the setup (eg you execute 1+1, and get 2, or a script for a simple plot if the course uses that, etc),
  2. if IT is not responsible for helping people, have office hours 3-5 days before the course for those who need it, also announce this in advance,
  3. communicate clearly that those who do not take advantage of these opportunities may not be able to participate in the class interactively until the problem is resolved (outside class, on an individual basis).
5 Likes

I’m surprised nobody mentioned juliabox. If you only want to do basic things it works extremely well in a teaching setting: no setting at all, many packages pre-installed, and students are usually more comfortable in a web-based setting (which I think is problematic for “serious” development, but if you just want a quick demo it’s ideal)

6 Likes

Hello,

You have to register/ login to use even the free one right ? I am pretty sure most students would not have an GitHub, LikedIn or Google account, at least not the student population in my courses. So this does not appear to be a viable alternative compared to self-hosting or installation of the free package to me. Also, I am not sure about privacy laws due to having to set up an account should use of JuliaBox be mandatory in any way.

I’m going to talk at length about this at JuliaCon.

Bioinformatics is in a state of tool and format hell, and julia is an incredibly good language for forming consistent and semantic API’s that are generic enough, so that scripts and tasks focus on WHAT you are doing to your annotation / sequence / whatever data, without needing to worry about the specific formats and trying to get one thing to talk to another thing using an awful load of greps seds and awks… which break for people using any other file in a slightly different format!

6 Likes

I am pretty sure most students would not have an GitHub, LikedIn or Google account, at least not the student population in my courses

This was not a problem, so I guess all our students do have a google account (or know how to setup one). It’s true that it’s annoying you cannot just register on juliabox, though.

I’ll add my $0.02 here, FWIW: I’ve been keeping an eye on Julia for some years now, though after taking a look at it quite early on (not sure which version but it was 0.4 or earlier), I saw that for my immediate purposes it wasn’t likely ready/stable enough so I let it go for awhile. My interest picked up again around the 0.6 release and I now see Julia as potentially very interesting, and (dare I use the somewhat cliched term) disruptive, though for its larger eventual audience not likely so for a few more years.

I think it’s important to think about a target audience for Julia not only in terms of what domains may benefit but also which types of users will benefit at any given stage of the language’s development. Pre-1.0 (or whatever its equivalent is in a project not following semver), it would seem to me that the target audience should include only users of the ‘consenting adults’ kind, in that they are fully aware that the syntax is unstable and that code they work on in today’s version will likely require a fair bit of updating to continue working in tomorrow’s; that many of the niceties of a mature language like debuggers and a rich package ecosystem where most packages themselves are stable will arrive someday, should the language become popular, and so on.

But this doesn’t happen overnight, of course. For an open source project like Julia early adopters (and what I’ll call late-early adopters such as myself) have to remember that the language (and packages) development is largely a volunteer effort and as such it is necessary to exercise patience, which includes not demanding that developers always hit milestones, bugs may appear to languish for longer than one would hope, etc.

What I’m getting at is that I’ve seen many reports of “I tried to introduce Julia in my classroom/workplace and it was not 100% successful” and each time I wonder how many potential future users of Julia were turned off by the experience and now will be “once bitten, twice shy” when it comes to the language. I’m not trying to tell anyone what to do but I’ll suggest that if this happens then you might have misjudged the target audience for your tutorial/class resulting not only in something counterproductive for yourself but potentially also for the growth of the community and the speed of the language’s adoption, which I think it’s likely that many if not most on this form are hoping for.

Again, not trying to judge anyone, just offering some thoughts which I’ll add are somewhat informed by experience: A younger more naive version of myself was also very excited by a new language called Python, somewhere between 1.0 and 2.0 IIRC (I remember being quite excited by the list comprehensions that were added in 2.0). A few years later in my first job after undergrad I found myself in a MATLAB shop where, despite not being formally trained in the area I was aghast at the many crimes against software engineering that I witnessed. No amount of version control was even being used whatsoever (I pushed to use CVS which was basically the best available open source solution at the time)! MATLAB was also particularly ill-suited to being a general-purpose language back then and what would eventually become NumPy (I believe at that point it was still called Numeric) was coming on the scene. Being a young impetuous know-it-all sort I proceeded to rewrite much of my team’s MATLAB scripts in Python. In the end I think the product was a significant improvement over the pre-existing MATLAB code, though now as a more mature (hopefully!) engineering manager I look back and wonder whether I could truly justify the ROI. In particular I think my colleagues who were stuck with my language decisions probably found it frustrating to have to deal with the language changes that were happening while this migration was happening, all the while thinking “I already know MATLAB and it works well enough, why is this guy wasting our time with this Python nonsense?”.

I regret nothing (that’s never a good policy anyway), and think in the end it probably resulted in both better tools for my group and a number of engineers who got an early start on Python/NumPy which I hope has served them in their subsequent careers. But I had several years of working closely with them in which to help nurture this.

So there are parallels I can see with Julia – it feels as though Julia is at a similar stage to Python 1.x + early NumPy (not sure what version number to assign, but pre-breakout into popular use), and those of us who are excited about the potential of Julia should consider how we expend our finite time and effort accordingly. I don’t want to tell others what to do but for myself in my current role that means limiting my Julia ‘evangelism’ to individuals who I feel are able to properly grasp the maturity of the language and correctly judge its appropriate uses; becoming active in this community and (slowly) getting up to speed on using Julia for personal things; and where I have the opportunity to look ahead towards planning how future projects at work will be executed, keeping Julia in mind while knowing that it is difficult to extrapolate exactly how mature it will be very far into the future.

Whew. That was more like $0.20 and thanks for reading this far if you did!

tl;dr: Know your audience, not just in terms of their domain knowledge but whether their immediate use of Julia would be appropriate in the context they would be using it. If it wouldn’t, consider spending the time contributing more directly to the community, in any one of the many ways that is possible.

16 Likes

I second this statement. I started pretty evangelically trying to get coworkers to look into julia. In the end I (maybe luckily for now) didn’t fully succeed. Now I am a bit more cautious, realizing that not everyone is as into spending time working with an amazing language, that is still prone to change and where the rich (read: stable) package ecosystem is still establishing itself. I now more play the: “yea I did this with julia, it’s awesome, check it out sometime” card, which seems to be good enough for now. People who are really interested will check it out and ask for help/guidance, and discover a true gem. Other people who are less inclined will eventually find out there is no stopping it anymore, julia rules the world - well or some version of that scenario I have in my head :smiley:. edit: nvm my comment on recent threads

9 Likes

We should not overlook the potential Julia has for teaching students good software engineering practices. Especially those who are not in a SE field per se, such as mechanical engineers or bioengineering students. Much better in my opinion than Matlab, but even better than Python which shoehorns everything into the limited and constrained OOP mold.

9 Likes

I also found that in scientific tasks, OOP more often than not obfuscates the meaning of the code, especially when you see bad Java-style OOP code written in Python (less so for Python written in a Pythonic way). In my use cases, I found that the native types and partial support for functional programming paradigms are big advantages of Julia.

5 Likes

vs the risk of storing yet another password?

1 Like

The fact that Juliabox does NOT store your password should help. Juliabox stores very little personal info, and we are very happy to delete your account if you ask us (and many do). So I don’t think there are any privacy law issues here.

1 Like

See example.

2 Likes

That is the point, that it stores personal data at all. Consider:

What you are promoting is to tell my students that they must create an account (however un-personalized) with a third party commercial entity in order to “attend” my lecture/ exercises at a publlic european university. That is a problem, not only because I would be forcing them to eventually disclose personal data but because I am sure that would cause (justified) outrage from the students and the university. And of course, as soon as personal data (email adresses for registration) are involved the EU GDPR becomes something to keep in mind.

But I suppose we both are not lawyers, so let’s stop speculating here. I hope you understand better why I am rather reserved about this idea.

6 Likes

Yes.
The price of a malfunction in the Google / GitHub / LinkedIn authentication system and exposing data through that is higher than by mistake exposing JuliaBox.

I, for one, would never let any system have my Google ID.
I really want to play with JuliaBox but can’t because of that.

By the way, I don’t mind on my Dropbox account :-).
So I’m waiting for that integration.

If you are concerned about this, ask your IT to set up a Jupyter server (or do it yourself, and have total control :wink:). Most universities have one running already for R, adding Julia is not that difficult.

However, I don’t really see the point of berating provides of a free service (JuliaBox) for their terms. It’s an alternative, if you truly find the registration requirements onerous then just don’t use it.

3 Likes

What are you talking about?

Maybe I miss something but I saw just answer to question.

And this is also what I observed! People don’t use it, somebody asked why and it seems to me like you have problem with honest answer.