🎨✨ So, our brave hero attempts to blend #JRuby with #JFreeChart to create "beautiful" charts, because nothing screams elegance like a Frankenstein mix of Java and Ruby. 🙃🔧 Apparently, collaborating with Japanese Ruby enthusiasts just confirmed that using external libraries in Ruby is about as straightforward as teaching a cat to code. 🙄🐱‍💻
https://blog.headius.com/2025/04/beautiful-charts-with-jruby-and-jfreechart.html #RubyOnRails #DeveloperHumor #CodingStruggles #HackerNews #ngated
Creating Beautiful Charts with JRuby and JFreeChart

I recently returned from RubyKaigi where I had the opportunity to sit down with members of the Japanese Ruby community and show them a little bit of JRuby. One of the items that came up a few times was the difficulty of utilizing external libraries from Ruby: if it’s a C library, typically you have to either write a C extension or do the extra work of writing up an FFI binding.

Creating Beautiful Charts with JRuby and JFreeChart

I recently returned from RubyKaigi where I had the opportunity to sit down with members of the Japanese Ruby community and show them a little bit of JRuby. One of the items that came up a few times was the difficulty of utilizing external libraries from Ruby: if it’s a C library, typically you have to either write a C extension or do the extra work of writing up an FFI binding.

@viveknityananda Did try, good results so far. I hope similar code-generating systems will appear for #matplotlib, #d3js and #jfreechart soon. Getting a plot layout right can be very time consuming and the approach at https://rtutor.ai is fantastic.

Now onto #FijiSc: Fiji is a recursive acronym meaning "Fiji is just ImageJ" https://fji.sc (and the paper https://www.nature.com/articles/nmeth.2019 ) –and #ImageJ is a #java open source software for image processing https://imagej.nih.gov/ij/index.html written by Wayne Rasband from the #NIH Research Branch.

An analogy: think of ImageJ as the kernel and Fiji as the rest of the operating system.

#FijiSc brings to #ImageJ:
(1) a package manager to install and update plugins, and that crucially enables reproducible science by exporting the whole set of plugins and libraries as an executable;
(2) a Script Editor https://imagej.net/scripting/script-editor supporting many languages (#python, #groovy #ruby #scala #clojure and more), all with access to a huge collection of #JVM libraries;
(3) huge amount of libraries such as #ImgLib2, #JFreeChart for plotting, for GUIs, etc.

There are many, many plugins. A tiny sample:

Machine learning-based image segmentation:
- #LabKit https://imagej.net/plugins/labkit/
- #WEKA Trainable Segmentation https://imagej.net/plugins/tws/index

3D/4D/ND Visualization:
- 3D/4D Viewer #3DViewer https://imagej.net/plugins/3d-viewer/index with ray-tracing, orthoslices, volume rendering, and more
- #BigDataViewer #BDV https://imagej.net/plugins/bdv/index for interactively navigate N-dimensional image volumes larger than RAM

Image registration and serial section alignment:
- #BigStitcher for registering 3D/4D tiled datasets, with multiview deconvolution and more https://imagej.net/plugins/bigstitcher/index
- #TrakEM2 for montaging in 2D and alinging in 3D collections of serial sections, typically from #vEM (volume electron microscopy) https://syn.mrc-lmb.cam.ac.uk/acardona/INI-2008-2011/trakem2.html
- #mpicbg libraries for extracting #SIFT and #MOPS features, then finding feature correspondences and estimating rigid and elastic transformation models https://www.nature.com/articles/nmeth.2072

Summarizing #FijiSc is impossible. See the online forum where questions find answers by the hand of the broader community of users and developers https://forum.image.sc/