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.