STATUS:6

Welcome

I’m John Neffenger, an independent software developer in Vancouver, British Columbia, Canada.

Programming

My main open-source contributions are listed below and described in the sections that follow.

2022
Created reproducible builds of the OpenJDK and OpenJFX projects.
2021
Published the current releases of OpenJDK and OpenJFX in the Snap Store.
2020
Released the VOLANO chat server under an open-source license.
2019
Ported the JavaFX application framework to devices with e-paper displays.
2018
Learned how to contribute to the OpenJDK project by fixing two font bugs.

Snap Store

OpenJDK: Current JDK release & early-access builds In December 2020, I started publishing the current releases of OpenJDK and OpenJFX in the Snap Store when I saw that they were not available in any current release of Ubuntu. I had been building both projects for years as part of my own testing, but the Snap packages let me document the process and create up-to-date builds for myself and anyone else who wanted them. The Snap Store now has the current releases and early-access builds of OpenJDK and OpenJFX for Linux, built directly from their source code on GitHub.

VOLANO Chat Server

VOLANO speech-balloon logo I wrote much of the VOLANO chat server and applets in the spring of 1996. In the decade that followed, the software became frozen in time at Java version 1.1 mostly due to the dominance of the Microsoft Java Virtual Machine in Internet Explorer. In the decade after that, it remained frozen in time mostly due to me. Now, more than two decades after launching the proprietary software, I hope to breathe some life back into it as an open-source project.

JavaFX on E-paper

Still frame of JavaFX animation on e-paper While attending the SIGGRAPH conference in Vancouver, I was fascinated by an exhibit in the Art Gallery called Lineographs, by Joseph Farbrook. It was the first time I had seen animation in electronic ink. After the conference, I was determined to reproduce the artwork on my own, but I soon learned how difficult that would be. The documentation was hard to find and provided only a C-language interface to the device driver. I wanted to use a cross-platform language and framework that would let me test my applications on a desktop computer and run them unmodified on the device. I preferred a framework like Java and JavaFX, Dart and Flutter, or Python and Qt, but none of them supported embedded devices with e-paper displays. JavaFX, though, already had much of what I needed to make it work.

So I added the support to JavaFX and contributed the code to the OpenJFX project. I submitted the code in two parts, with 1,831 new lines of code in all. The first part, included in JavaFX 13, added a new platform for Linux systems with e-paper displays. See Issue #339 for details on the motivation and design of the new platform and Pull Request #369 for the implementation. The second part, included in JavaFX 15, added support for additional device models. See Issue #521 for details and Pull Request #60 for the implementation. I also published a JavaFX application to test the new platform.

Java Font Fix

Screenshot of Java font bug For 10 years, each time I downloaded a new release of Java, I immediately checked whether the font bug had been fixed. And for 10 years, each time I checked, the bug was still there: color fringes so severe that it was impossible to use. I came to the conclusion that I needed to fix the problem myself or abandon Java altogether.

I created the repository OpenJDK FreeType Font Fix to explain the long and convoluted history of the bug and provide a two-line fix. The fix is available in Java 12 or later and has been back-ported to the Java 8 and 11 Long Term Support releases. I am happily still using Java today.

JavaFX Font Fix

Screenshot of JavaFX font bug Before trying to fix the Java font bug, I started with the same bug in JavaFX. Reporting bugs about fonts can be particularly challenging. It’s difficult to convince developers that what you see is a bug rather than a personal preference. By 2017, there were already two bug reports explaining the problem, but both of them had been closed as “Not an Issue.” By 2018, the bug had persisted for five years. If I wanted to open yet another bug report, it was going to require some compelling evidence—and probably a fix, too.

I created Issue #229 to provide both the evidence and the fix, and my Pull Request #235 was merged into JavaFX the next day. The fix is available in JavaFX 12 or later.

Typography

I took on these projects to find out whether I could automate the production of well-formatted books in plain text, HTML, EPUB, Kindle MOBI, and several PDF paper sizes, all from a single source. The projects were a success thanks to the great open-source tools available in LaTeX, HeVeA, ImageMagick, Potrace, and Inkscape.

Wild & Woolly

Wild & Woolly book cover I designed the e-book versions of Wild & Woolly: A Journal Keeper’s E-book, by Alfred DePew, and automated the production of PDF files in A4, A5, and A6 paper sizes. Click the Read or Free sample button on the Google Play page to view a sample of the work.

The Melancholy of Departure

The Melancholy of Departure book cover I designed the e-book versions of The Melancholy of Departure, by Alfred DePew, and automated the production of PDF, EPUB, and Kindle MOBI files. Click the Read or Free sample button on the Google Play page to view a sample of the work.