Revision as of 10:51, 24 March 2017 by Rueden (talk | contribs) (What is Curtis working on?: Add BDV unification issue link)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Curtis Rueden
Affiliation UW-Madison LOCI
ImageJ Forum ImageJ Forum profile
GitHub GitHub profile
StackOverflow StackOverflow profile
Open HUB Open HUB profile
ResearchGate ResearchGate profile
arXiv author id arXiv profile
Google Scholar Google Scholar profile
LinkedIn LinkedIn profile
LOCI LOCI profile

Curtis Rueden directs the software development efforts of LOCI. He is the principal architect of ImageJ2, and the current maintainer of the Fiji distribution of ImageJ.

What is Curtis working on?

Primary projects

Here is a summary of my current projects, in priority order. I try to keep this list up to date.

  1. LOCI web server Dockerization.
  2. Ops generic type matching. Improve the Ops type matcher to fully support generics, including recursive generics. (scijava/scijava-common@generic-types, imagej/imagej-ops@nil)
  3. ImageJ + Java 8. Complete the migration to Java 8 with a Java-6-compatible stub classpath that checks your Java version and tells you how to upgrade to Java 8 if needed. Retire the Java-8 update site, distributing its contents back onto the ImageJ and Fiji update sites.
  4. Rich Image. Improve the ImageJ Common data model to support metadata (e.g., spatial transformations) as a first-class citizen. (imagej/imagej-common@rich, imagej/janelia-hackathon-2016)
  5. POM unification. (Split BOMs from parent configuration)
  6. Document community expectations. Formally define and clarify who is responsible for maintaining which plugins, to what extents (Project developer roles, ctrueden/ctr-scripts:dev-find, fiji/fiji:bin/team-hints.perl)
  7. GitHub issue reporting plugin. The Fiji BugZilla is temporarily offline; those pages need to be restored, and then—along with the remainder of the ImageJ Trac—migrated to GitHub Issues. The Report a Bug plugin needs to send reports to GitHub instead. (scijava/scijava-plugins-issues-github)
  8. SCIFIO blockization. (scifio/scifio#283)
  9. SciJava Common 3. (scijava/scijava-common@sjc3)
  10. ImageJ Launcher. Switch to a JavaFX-based native launcher. Retire the current ImageJ Launcher. (imagej/imagej-launcher#33)

I am fully committed to all of the above projects. They are driven by me, making progress only when I directly work on them.

Additional projects

I am also coordinating and/or leading and/or advising and/or helping with, but not directly implementing, the following additional projects:

  1. (with Alison Walter) ImgLib2 ROIs. Development of data structures, especially for use with ImageJ-OMERO. (Implementation plan for Imglib2-rois 2D)
  2. (with Leon Yang) RESTful image server. Backed by ImageJ. (imagej/imagej-server)
  3. (with Gabriel Einsdorf) SciJava I/O. (scijava/scijava-common@more-handles)
  4. (with Kyle Harrington) ImageJ in 3D. Unification of ImageJ 3D visualization efforts around ClearVolume and the ThreeDViewer.
  5. (with Tobias Pietzsch) Visualization of big data. Unification of visualization in general around the BigDataViewer. (imagej/imagej-common#66)

Constant priorities

Finally, I have the following continuous priorities:

  1. Mentoring student programmers at LOCI
  2. Coordinating programming efforts at LOCI
  3. Questions on the ImageJ Forum
  4. Bug reports
  5. Pull requests
  6. Email (~300 messages per day as of this writing)
  7. Server maintenance and troubleshooting
  8. Project management tasks (e.g., managing Issues)

On average, I spend ~0-2 hours per day on my primary projects above. The rest is spent on these constant priorities.

Recommended development tools

So you want to be an effective software developer? Use tools!

Tool Purpose Plugins
Eclipse Super powerful
  • Essential for navigation of large projects
  • Supreme code completion
  • Super useful debugger
Vrapper Vim-fu inside Eclipse – almost as good as the real thing
JD-ECLIPSE Automatic decompilation when browsing classes
Vim Best editor! Crazy fast macros Vundle Manage your vim plugins like a boss
vim-sensible Defaults everyone can agree on
vim-airline Lean & mean status/tabline that's light as air
vim-fugitive A Git wrapper so awesome, it should be illegal
vim-repeat Repeating supported plugin maps with "."
vim-surround Quoting/parenthesizing made simple
See also my .vimrc
Zsh Awesome shell – even better than bash zgen Lightweight plugin manager
oh-my-zsh Your terminal never felt this good before:
  • git - awesome git completion and aliases
  • mvn - mvn completion, highlighting, aliases
  • vi-mode - vi on the CLI
  • vundle - manage your vim plugins
  • z - stop cding your life away
  • And much more
zsh-syntax-highlighting Syntax highlights commands as you type them
zsh-history-substring-search Better command history navigation
zsh-completion Even more and better tab completions
See also my .zshrc
Git It is worth the pain, I promise myrepos Commit, push & pull across repositories en masse
See also my .gitconfig
GitHub If you don't have a GitHub account, you don't exist
Maven Build reusable software components

See also: