Encouraging adoption story

I see posts on here occasionally that lament the slow uptake of Julia in the wide world, resistance from colleagues/employers, etc., and wanted to share an encouraging interaction I had recently.

The story starts six years ago, when I was a postdoc analyzing a huge (> 70 TB) underwater acoustic dataset (shameless promotion of the output). I wrote a Julia package for some of the batch analyses, and when I finished the postdoc I handed it off to an engineer there to keep running it as new data came in. He had not used Julia before, but I gave him a thorough run-through and set of instructions for using Julia and my code.

Unfortunately, the package wasn’t as polished as it might have been, and this was right after the Julia v1.0 release when a lot of things were still not quite fully-baked. Between my own bugs/design mistakes, and the rapidly changing ecosystem and tooling, he had a frustrating experience, and once apologetically confided to me that he “kind of hated Julia.” I was pretty sure I had permanently turned him off the language. He said he would keep running it until he had time to rewrite it in Python.

Well, it is now four years later. A few weeks ago he emailed me saying he was finally porting my code to Python…only to realize it ran much slower. He also mentioned that the Julia tooling, particularly through the VSCode extension, was much more stable and pleasant to work with than 4 years ago. I was pleasantly surprised. And then, just today, I got an email from another mutual colleague, which mentioned that this formerly skeptical engineer was “a new fan of Julia.” I don’t know if he’ll switch to writing his own new code in Julia, but he was at least impressed enough to be talking it up to other people.

This is just an anectode, but I think it’s representative of the improvements we’ve seen in the language, ecosystem, and tooling over the past few years, not to mention all the hard work that has made them happen. It also tells me that the language will continue grow as it finds its killer apps in different fields. Ultimately, I have used Julia because I think it is the best tool for me, and nobody has told me I can’t. But for anyone who cares about wider adoption (and, if I’m being honest, I do too on some level), I wanted to share this morsel of encouragement. Keep up the good work, everyone!

89 Likes

And once Julia has easy to use “static compilation” it will be even more popular.

10 Likes

That’s an awesome story @ElOceanografo! I’ve seen some of your work on ocean acoustics. I work in ocean sonar and have been prototyping ideas of how to connect your code with mine. Thanks for sharing!

3 Likes

Cool! Feel free to ping me if you ever want to chat about those ideas…

2 Likes

To use Python at all for this kind of work, you have to use numba (or maybe PyPy, Cython which are not standard Python, but numba is also a “reduced” Python). Julia has developed steadily over the years; I’m sure the tools are at least comparable probably better, once you’re comparing to nonstandard Python.

If you do have some Julia/Python ports, you can compare the code, Julia is a much nicer language overall. 1-indexing actually results in simpler looking (and thinking) code, loops look more natural and cleaner. (not sure with Python’s mantra of “no loops”, how it’s even a serious language!)

1 Like

Why it is perfectly OK to prefer Julia over Python, questioning the legitimacy of the latter as a programming language is not warranted. It is just a different programming language, with different style, history, and strengths.

10 Likes

Could the OP’s first post be modified a bit to make it a blog post on the Julia-lang website? I imagine that by posting it there it might have a wider audience.

This is really meant for the context that most people here using programming languages. Python isn’t serious for numeric computing, not shy to say that.

“Serious” is not a well-defined concept in this context. That said, programmers have been using Python’s numerical extensions productively in scientific programming, including numerical work.

The problem with dismissing Python altogether is that it is counterproductive. A lot of people who do scientific programming in Python are in an ideal position to switch to Julia. Telling them that what they have been working on for decades is not “serious” is not going to win them over, and if they experience opinions like this from the Julia community, this may just result in their dismissing Julia altogether.

28 Likes

Rust is getting a lot of backlash from C developers to the point that they think Rust developers are trying to convert them to the Rust religion. Let’s hope that Python developers don’t start to feel the same way as C developers.

Successful stories of using Julia like this are the best promotion Julia can have. I hope this success story doesn’t fall into oblivion in a Discourse thread like many others before it.

4 Likes

Sure, I’d be happy to write this up as a blog post if there’s interest.

4 Likes

Such stories can become very popular on Hacker News. For example, this blog post occasionally appears on the front page of Hacker News.

It would be nice if Julia-lang’s blog would publish or link to it. It used to publish these success stories there, but lately it seems to focus more on launches of new Julia versions.

Personally, I find python’s sintaxe a bit messy and Julia feels much more natural, intuitive and clean. I’ve had to switch to python some times in my life due to work requirements, like company’s policy and usage of FEniCS. But it’s always been a headache, specially with package installation, which is far better and simpler in Julia.

Julia to take off needs only a larger set of libraries, really. Another important feature to be improved is building stand-alone executable files, much like csfreeze does in python.

We’re thinking about some new things to post on the main Julia Language blog. We likely won’t post a single adoption story like this, but I could see us collecting some adoption stories / user stories and posting them together in a blogpost every few months!

4 Likes

It’s “no fast interpreted loops”, and you often don’t need loops to go as fast as possible, just like we don’t need Julia to statically dispatch everything all the time. Fast-enough flexibility goes a LONG way; if you have to wait for a task, it may not matter whether you complete another task in 5ns or 50ms. There’s good reason that the two-language problem crops up in numerical computing where optimizing matters more, and it’s not such a problem that Pythonistas can’t do serious work or that Julians would ever shy away from wrapping a good library to build packages on (JuliaBinaryWrappers · GitHub).

1 Like

Wonderful news! I hope the new focus of the blog will better reflect the improvements of Julia and its ecosystem. In addition to JuliaCon, the blog could serve as another channel to learn about the state of Julia and the main popular packages. It could bring more recognition to all the effort that Julia core developers and package developers put into improving Julia and its ecosystem.

It would also be good if the blog could better reflect how Julia’s community is growing. There are more and more local events in more and more countries and reading the success stories of these events can inspire others to hold events in their city.

1 Like

Python is like C with scripting and a console, kind of like how games use Lua but they’re implemented in C++.