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.
