Meet Josiah Haswell! He is one of the 2022 winners of the Vaadin Community Award. With a background in compilers and distributed systems, Josiah is currently the CTO of Sunshower.io – a (now mostly open-source) low-code deployment and infrastructure cost and configuration optimization product. In his spare time, Josiah is a mountain biker, dog dad, and professional pastry chef.
What programming languages have you used professionally?
How did you discover Vaadin?
Initially, we (sunshower.io) wrote our UI in a SPA technology called Aurelia, which at the time was pretty revolutionary – for comparison, its primary competitor was Angular 1. When Sunshower.io moved from a monolithic web application deployed in Wildfly to a modular application deployed into Sunshower’s Zephyr module container, we wanted to provide the ability for 3rd-party enterprise users to extend our application with their own extensions (modules). It wasn’t hard to register new applications with their own servlet context path to add new UI functionality, but we also wanted to provide users with the ability to extend sunshower.io SPA UIs. This was a very peculiar use case, and I was absolutely delighted when I discovered that Vaadin could do it, as none of the other technologies I evaluated (Angular, VueJs, Aurelia, React, GWT, Sencha) could.
Better yet, Vaadin actually made it pretty simple to dynamically extend UIs (register routes, add/remove/disable/enable widgets, etc.) in response to the Zephyr module or application states and configurations. This was an absolute game-changer for us, but I discovered that I genuinely enjoyed working with Vaadin in addition to its technical capabilities. I developed
Aire::Test which allowed us to navigate the Vaadin DOM using CSS selectors, dynamically registering and unregistering components, etc. Features that would take weeks to develop and test now took hours.
You recently created a library of open source components and utilities for Vaadin called Aire UX. Could you tell us a little more about these?
The Vaadin component library and ecosystem is really wonderful, but we did have some custom components such as a web-based integrated development environment, a pretty sophisticated diagramming component, dockable layouts, and various controls like haptic switches, identicons–that sort of thing. On the testing side, Karibu was quite nice to use, but navigating the DOM was always a bit cumbersome, so I wrote some custom JUnit and Vaadin extensions that allowed us to navigate the DOM using a pure Java CSS Selector L4 implementation that I developed as part of Aire.
In addition to facilitating testing, Vaadin’s flexibility allowed us to hook into the component creation subsystem (how we handle extensions), and we discovered that we could use the CSS Selectors developed for test-navigation to inject other components elsewhere in the Vaadin server-side DOM into other components via CSS selectors, which made for some exciting possibilities for creating loosely-coupled and dynamic component options.
Of course, none of this was related to our core business, so we decided to open-source as much as possible to contribute some additional quality components to the ecosystem that has been so beneficial to us. I recently added a Maven archetype that will generate a Vaadin component skeleton suitable for deploying into Maven Central/NPM, and I hope it can reduce some of the friction of creating and sharing new components! (I do need to learn how to deploy these components into the Vaadin community portal).
What are some of the most pressing challenges that software developers face today?
Maybe it’s just my curmudgeonly “kids these days” take, but I sense that the industry has become enamored with complexity as an end to itself. The issue of unnecessary complexity spans practically everything, from cloud costs to security surface area, and even becomes an accessibility problem for new developers.
Software developers are also finding themselves in the vanguard on a huge variety of social and political issues. Software has always had a strong social aspect, but software developers are making decisions every day that have sweeping consequences for national security, privacy, and human rights, economics, environmental concerns–practically any broad social issue touches software and vice versa.