Why I use Julia

advocacy

#1

I want to state why I use Julia and what excites me about it so that others who come here looking to get an understanding of the language will be encouraged by someone who uses it professionally. I’d love to see replies by others stating why they love Julia and how they are using it, as well.

My job currently is as a data scientist for a company that builds and manages slot machines for Class II gaming (Native American Casinos). My specific focus is player behavior, which is a very interesting field of study. I’m not interested in selling more games to players - we already have a loyal base. I’m not interested in confusing or deluding players - they are loyal for good reasons. I’m more interested in understanding why they like our games, what they want to see in future games. I also want to make our new games more attractive than our competitor’s machines. Defining, detecting, and improving player delight is important for any gaming company, I believe.

My main languages in the past 10 years have been C#, Python, Clojure, and R. My main personal measure of a language is, for a given domain, how much effort would it take for me to create a solution. Some languages had a pretty steep learning curve (Clojure and R). Some had almost no learning curve (Python). Every language has a long path to mastery, though. I was introduced to Julia in 2014, I believe, by a local consulting data scientist who has done a lot with Clojure as well. It was about the same time I learned R to replace Python.

I found I was able to enable solutions faster in R than in Python for a lot of my work. For many of the tasks I was working on, R and R-Studio was a great choice. Then I started working on Casino scale data, looking at the telemetry off of 23,000 machines. I had access to hundreds of billions of records. Many trillions of data points. However, the speed at which I was able to process that data was really slow. A month of data from just one casino for just one type of game might take 60 hours to compute.

My last R project was measuring behavior change during sessions. In straight up R I was able to process 400 records a second. This was way too slow. I used the parallel package (after a steep learning curve) and got that up to 6000 records per second on an HPC platform. That was much better, but the effort needed in code changes was really burdensome. Plus I shared the HPC. I switched to Julia even though it slowed me down at first. It took a while to get the cadence and to be able to just write code without looking up a lot of syntax.

Later, after I had built up some skill in Julia, I revisited the player behavior model. Out of the gate, the Julia version of the model processed 37,400 records per second. I haven’t tried making it parallel or running it on the HPC, yet. I can imagine really fantastic gains once I do though.

The set of things I miss from R isvery rapidly shrinking. The things I gained with Julia make up for them many times over. Julia is a much more modern language. If you know how to program, you can get the most out of it. I understand that many people who do data science list programming skills near the bottom of their top 5 skills. Even still, though, the raw gains from Julia more than make up for inefficient programming practices, in my opinion.

Julia + Atom have replaced my R-Studio experience, for the most part. A couple of things feel more comfortable in R-Studio. I know Atom, and Julia, are advancing quite a bit though.

There are still rough patches, but I’m able to do professional work with Julia in spite of them. Debugging is underdevelopment, but isn’t robust yet. Some packages that were working are now broken with the latest release. Major syntax changes in 0.5 and 0.6 have invalidated a bunch of tutorials out there. However, there are options and workarounds. Fixing tutorial code so that it works is a great learning experience. The docs section on the Julia homepage is up to date and really excellent. Plotly.jl not working? Look at Gadfly.jl! (Replace Plotly and Gadfly with any other pair of packages - there are many choices.) Finally, the community on discourse is excellent. Plus you can find people to collaborate with. Personally, I want to help make the debugger solid. I want to improve the speed of the two kernel density estimation packages I’ve seen (they are almost identical in speed). I want to create a change point detection system like the one available in R.

Finally there is still time to get on board with Julia while it is still cool! It hasn’t made a decent top 10 languages list yet! Don’t wait until it does and look like someone who jumps on bandwagons. Julia is ready for you today.


#2

I used R in student projects in 2005-2007. The language then was seemingly non-intuitive at places. I didn’t use it for professional work. When I used Julia now I found it was not an easy language but definitely conceptually far clearer.

I have written about 2500 lunes if code which can do lot more than I could do with C/C++ 15000 lines of code.

Regards,

Sambit


#3

Check out this thread.


#4

Nectarineimp, I agree with what you say. Get on board now and be one of the cool kids!

You mention Atom, which is my favorite also. Just to mention that Atom Beta comes with built in Git and GitHub facilities. I think this is awesome. A GUI for git commits in the same pane as your Atom editor.


#5

Oh, reasons why I like Julia.
I come from a particle physics background, and learned FORTRAN many years ago. I Still have a copy of “A Structured Approach to Fortran 77 Programming”. Honest - such a book exists!
In my career I have used Perl and Pythosn for systems type programming.
I gather that a lot of particle physics code these days uses C++ and I just wonder why use such a complicated language with the capabilities to shoot off your own foot…
I am looking at Julia as a ‘clean’ strongly typed language for implementing physics simulations.
Being able to add packages for doing various types of plots from the REPL is just awesome )yes, I know you can do this in other languages too).

I also know that ‘strongly typed’ is not the correct technical term here.


#6

I started out as a solid state physicist (condensed matter) before realizing I could make 10x the money creating corporate databases. I am so happy Julia exists. After a lot of experience with R, and battles with awkward 1970’s era syntax, Julia is my go to language for most tasks. The fact that you can do this with a dataframe: df[df[ 64 .<= df[:machine_count] .<= 300], :] just blows my mind. It is so much simpler and intuitive. It possible to do that in Python, of course. At Python speed. With Python’s bifurcated branches… Thanks for your response!