I work on numerical/scientific code, so my experience may be different than more traditional programming uses.
Atom is great. I tried the original JunoLT, and it put me off from Julia for awhile, but I feel at home in Atom. Nice tip: there's a package for hidpi if you have a 4K screen. It will automatically resize your text to match the difference. I have a 4K widescreen monitor turned vertical and can swap my code over there to show code paradise, but then if I swap it to another screen (to have a big pdf open) it changes instantly. Honestly, the debugging could be better. The errors are really good so you usually know what line it is and what kind of problem it is, but I would like a debugger (and haven't tried to build Gallium yet). But println debugging works well. Plots.jl is great. I was using a mixture of PyPlot and Gadfly, but am moving my package over to Plots.jl because it lets you use like every package. That's actually the key to Julia. Julia with its named functions and multiple dispatch has the ability to wrap things really well. Thus there are very powerful packages which wrap things. Plots wraps a bunch of backends so you can use the same plot command with a bunch of different backends. JuMP lets you define a nonlinear problem and try out a bunch of different solvers. Etc. Things that would normally be multiple different scripts just to test things out, is now the difference of 1 line. Must have packages? DifferentialEquations.jl. I kid... but not really. I made something like this in MATLAB a few years ago, but it was really slow due to what MATLAB does with anonymous functions, and many other reasons. I built this in Julia quite quickly and it works well. The flexibility of Julia gives the same situation like I described in the last paragraph where it's really simple to define new problems/algorithms and so developing new numerical methods is much easier. But the true good packages are the amazing performance-based macros. ParallelAccelerator.jl is killer: you just add @acc in front of a loop and get a really fast basically fully-optimized C++ program. Devectorize.jl can devectorize vector-functions to make readable but fast code. JuMP and all of the optimization packages it can use is amazing if you do that kind of work as well. CudaRT.jl is really easy to use and gives a quick interface to CUDA code. Two pieces of advice. The first is to get on Gitter. People are really helpful on Gitter, don't be afraid to ask. It's been really helpful for me. The second, is the machinefile. I don't know if you use HPCs, but if you use an HPC using multiple nodes for a computation in Julia is as simple as this: add the MPI stuff to your job script, and pass the machinefile to Julia. That's it. Now your @paralllel loop runs on 192 cores. I wrote how to do this in more detail on my blog. <http://www.stochasticlifestyle.com/multi-node-parallelism-in-julia-on-an-hpc/> Coming from doing C+MPI coding to do this stuff, I will never go back. Now code that takes MATLAB amount of time to develop can do almost what the C+MPI code could do (which takes sooo much longer to make). On Thursday, May 12, 2016 at 10:01:04 AM UTC-7, David Parks wrote: > > I'm a few weeks into Julia and excited and motivated to learn and be as > efficient as possible. I'm sure I'm not alone. I know my way around now, > but am I as efficient as I can be? > > What haven't I tried? What haven't I seen? What haven't I asked? > > For those of you who have been around longer, could you share your advice > on efficient day-to-day development style? > > For example: > > - What IDE do you use? Are you using Atom? A combination of Atom and > the REPL? Something else? > - How do you debug complex code efficiently? How do you debug other > peoples code efficiently? > - Do you have a favorite way of visualizing your work? > - Are there must have tools? packages? utilities? > - Any simple day-to-day efficiency/advice you could share with others > who didn't yet know to ask. > > >