I use Julia with Emacs+ESS+julia-mode. I find it very efficient,
especially as I use Emacs for everything else too (LaTex, other
programming languages, e-mail, git interface).

I debug using print statements. I find @show very valuable, also see
https://github.com/timholy/DebuggingUtilities.jl . I am looking forward
to using Gallium.jl though, but at the moment I am in the middle of a
project with a deadline so I stick to the current stable version and
don't play around with 0.5.

I find @edit really useful, for looking up code for matching
methods. Also methodswith.

I find Plots.jl and Gadfly.jl very convenient for quick plots (and of
course also for production-quality plots). I have been using the latter,
and experimenting with the former now.

Favorite packages outside the core include Parameters.jl. JuliaStats
packages are really well-designed and high quality too. But of course
which packages you find useful would depend on your application domain.

Coming from Common Lisp and R, I had to wrap my head a different
workflow. In interactive languages I used previously, I kept
manipulating the image interactively, refining functions, building up
the good old "big ball of mud", then I would clean up, all without ever
restarting the process (especially in CL).

Workflow in Julia is quite different, especially because of the infamous
issue #265. I put things in modules very early, and keep reloading. I
have been experimenting with an interactive workflow using
eval(module,...) via ESS, but until #265 is fixed I put that on the
backburner.

So because I call workspace() so often, at the moment I break up things
into modules and small "scripts" which load them, load some data and
generate other data or plots, each a single well-defined step (eg
datacleaning, MCMC, simulations). I found JLD invaluable for this. To a
certain extent, this reminds me of a C/Fortan workflow, but in a nice
way :D It is certainly more disciplined then doing everything
interactively and then (occasionally) not being able to reproduce the
results.

Having used Julia for a while I am much more relaxed about optimizing code
now. I try not to do silly things (like row-major access for a
column-major structure), but in general I postpone profiling and
optimizing to much later, and sometimes don't do it at all. I find this
efficient because I spend much more time writing and rewriting code than
running it, and Julia is very efficient out of the box, so extracting
another factor of 2-5 with a lot of work is not a major concern unless I
use the code often.

On Thu, May 12 2016, 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.

Reply via email to