Blog

Josiah Haswell on building Aire UX - an open source components and utilities library for Vaadin

By  
Lilli Salo
Lilli Salo
·
On Dec 16, 2022 3:22:52 PM
·

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.

Josiah Haswell (1)

What programming languages have you used professionally?

I started programming in Lisp (CMUCL) because I needed to modify a Lisp-based computer algebra system for my mathematics coursework (I couldn’t afford Maple at the time).  Since then, I’ve worked professionally in Java, OCaml, C++, Clojure, Haskell, TypeScript, JavaScript (one of my earlier professional projects was implementing an early web-based IDE for a query language, circa 2008), C, Rust, Go, Ruby, Python, and R. 

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).

Aire UX

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.  

Josiah, congratulations on winning the 2022 Vaadin Community Award - you deserve it! We truly appreciate all of your valuable contributions to our community.

Learn more about the Vaadin Community Award -->

vca
Lilli Salo
Lilli Salo
Lilli joined Vaadin in 2021 after delivering content for various international SaaS startups. She enjoys the creative challenge of transforming complicated topics into clear and concise written material that provide value to the reader.
Other posts by Lilli Salo