Your Julia language journey

I have been learning Julia for a few months now and want to know how others have walked this path before. Please share how you started learning Julia, the difficulties you faced, and other interesting things you did while learning the language. Please also share what are the things that you use Julia for at the present time. I think this would be really helpful to me and other learners like me.
:julia:

5 Likes

First installed Julia at v0.3 and was deeply impressed, since I used Fortran before and desired a language exactly like Julia. At that point, I did not take it seriously yet, since it was early, but noted it for later. The video presentations on youtube drew me in. Around v0.4 it was time for me to actually start learning how to do stuff with Julia in a basic way. Julia community was the most fantastic place on the internet to me now, and the creator of Maxima.jl gave me advice on how to get started on a proposal I made: symbolic computation with Reduce.jl in the Julia language. This, along with creating the Fatou.jl package for fractals and the Dendriform.jl algebra package gave me my first taste of publishing open source code.

It’s okay if you don’t know how to realize your vision initially. I know when I first proposed the idea of using REDUCE algebra in Julia, I actually had no idea that I would end up being the person to do it, because I didn’t know how to get started. Yet, the initial help from @nsmith showed me how easy and simple it would be to actually realise the vision by myself.

Later on, I created the Grassmann.jl geometric algebra package. This one was different, I had pre-planned and designed it in my head for at least a year or more before getting started. At that point, I already gained much experience on computer algebra in the Julia languages from my other packages. It started as a single package, which I later split into 3 separate packages (building it as a foundation, I found that recompilation can be made faster by splitting things up in separate modules). Now, I am in the stage where I am making packages that depend on this computer algebra foundation I have built up. For both the Dendriform and Grassmann algebra I ended up contributing to the base Julia language to support some new unary and binary operator symbols (most notably the Hodge star used in differential geometry).

In my journey, I have grown a bit bitter and unprofessional in the Julia community, unfortunately. This bitterness is due to personal circumstance and would not be something applicable to most people. These personal experiences have somewhat ruined my Julia community experience, but I am hoping to recover from that situation.

Hope it inspires you, and that you find something great to work on for making your vision come to life.

31 Likes

Really nice to know that. I too would like to take on some projects that I have in mind but I am not sure whether to learn all of (or at least most of) things about Julia or to start with the projects and learn as needed.

Do it :+1:

In my experience learning a new programming language and/or paradigm by “learning on the job” beats just reading or doing exercises by a wide margin. It will probably not be the best Julia code that you will ever write but you have to start somewhere and you can always come back to it when you have more experience (which means you can learn multiple times from it: the first time you write it and on subsequent iterations when you recognize all the horrible things that you have done in the past :dragon:).

Let’s go :tada:

11 Likes

I think you are right. I will probably gain more practical knowledge by doing projects. Thanks for the advice :vulcan_salute:

Well, I have read about Julia but not actually use it before version 0.7 just before 1.0. I work on Machine Learning and stochastic optimization (with evolutionary computation). In Machine Learning (and Deep Learning) I work nicely with Python (Scikit-learn and Keras/PyTorch). However, in optimization I usually did prototype in Python, and later have to translate to C++ for performance (well, not while the function evaluation takes too much).
Now I starting using Julia for these algorithms (I prefer it a lot against Numpy). For ML I am actually testing options with Julia (MLJ.jl and Flux mainly).

My main problem is the lack of examples/tutorials in the documentation for several packages. Also, some missing functionality.
I am going to explain it with an example. I did a small website in Julia to receive a file and transform it (for learning, I have experience in other technologies like Python/JS, …) http://pradofacil.danimolina.net/. I did it using Frankling have to create my own website, it was nice. The server side I have two problems:

  • HTTP.jl is simple but not very complete, I have to create my own function to extract the POST parameters.
  • I wanted to have error messages in two different languages (English and Spanish), but the Gettext package did required Python, and I do not want to install it in the server only for that. So, I create my own package SimpleTranslation.jl to translate easy messages in a simple way.

Usually I create scripts, but in Julia the time required to load the packages make them slower than similar to Python. In order to reduce that problem I recently created DaemonMode.jl package.

The good and bad:

  • good: How easily is to create packages, and register it. The syntax, and many great packages: DataFrames, Plots, …
  • bad: documentation of several packages. There is the API, but learning to use them usually implies several tests.

To summarise, it is a great language. When you use it, sometimes to affort small problems due to a not too mature ecosystem, but the evolution is clearly to best.

4 Likes