|arXiv author id||rueden_c_1|
What is Curtis working on?
Here is a summary of my current projects, in priority order. I try to keep this list up to date.
- LOCI web server Dockerization/robustification.
- POM unification. (Split BOMs from parent configuration)
- 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)
- 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)
- 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.
- 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)
- 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)
- SCIFIO blockization. (scifio/scifio#283)
- SciJava Common 3. (scijava/scijava-common@sjc3)
- 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.
I am also coordinating and/or leading and/or advising and/or helping with, but not directly implementing, the following additional projects:
- (with Alison Walter) ImgLib2 ROIs. Development of data structures, especially for use with ImageJ-OMERO. (Implementation plan for Imglib2-rois 2D)
- (with Leon Yang) RESTful image server. Backed by ImageJ. (imagej/imagej-server)
- (with Gabriel Einsdorf) SciJava I/O. (scijava/scijava-common@more-handles)
- (with Kyle Harrington) ImageJ in 3D. Unification of ImageJ 3D visualization efforts around ClearVolume and the ThreeDViewer.
- (with Tobias Pietzsch) Visualization of big data. Unification of visualization in general around the BigDataViewer. (imagej/imagej-common#66)
Finally, I have the following continuous priorities:
- Mentoring student programmers at LOCI
- Coordinating programming efforts at LOCI
- Questions on the ImageJ Forum
- Bug reports
- Pull requests
- Email (~300 messages per day as of this writing)
- Server maintenance and troubleshooting
- 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!
|Eclipse|| Super powerful
||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:
|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|